分类 技术 下的文章

如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。

在我的上一篇文章中,我解释了如何为单个站点配置 Apache Web 服务器,事实证明这很容易。在这篇文章中,我将向你展示如何使用单个 Apache 实例来服务多个站点。

注意:我写这篇文章的环境是 Fedora 27 虚拟机,配置了 Apache 2.4.29。如果你用另一个发行版或不同的 Fedora 版本,那么你使用的命令以及配置文件的位置和内容可能会有所不同。

正如我之前的文章中提到的,Apache 的所有配置文件都位于 /etc/httpd/conf/etc/httpd/conf.d。默认情况下,站点的数据位于 /var/www 中。对于多个站点,你需要提供多个位置,每个位置对应托管的站点。

基于名称的虚拟主机

使用基于名称的虚拟主机,你可以为多个站点使用一个 IP 地址。现代 Web 服务器,包括 Apache,使用指定 URL 的 hostname 部分来确定哪个虚拟 Web 主机响应页面请求。这仅仅需要比一个站点更多的配置。

即使你只从单个站点开始,我也建议你将其设置为虚拟主机,这样可以在以后更轻松地添加更多站点。在本文中,我将从上一篇文章中我们停止的地方开始,因此你需要设置原来的站点,即基于名称的虚拟站点。

准备原来的站点

在设置第二个站点之前,你需要为现有网站提供基于名称的虚拟主机。如果你现在没有站点,请返回并立即创建一个

一旦你有了站点,将以下内容添加到 /etc/httpd/conf/httpd.conf 配置文件的底部(添加此内容是你需要对 httpd.conf 文件进行的唯一更改):

<VirtualHost 127.0.0.1:80>
    DocumentRoot /var/www/html
    ServerName www.site1.org
</VirtualHost>

这将是第一个虚拟主机配置节,它应该保持为第一个,以使其成为默认定义。这意味着通过 IP 地址或解析为此 IP 地址但没有特定命名主机配置节的其它名称对服务器的 HTTP 访问将定向到此虚拟主机。所有其它虚拟主机配置节都应跟在此节之后。

你还需要使用 /etc/hosts 中的条目设置你的网站以提供名称解析。上次,我们只使用了 localhost 的 IP 地址。通常,这可以使用你使用的任何名称服务来完成,例如 Google 或 Godaddy。对于你的测试网站,通过在 /etc/hosts 中的 localhost 行添加一个新名称来完成此操作。添加两个网站的条目,方便你以后不需再次编辑此文件。结果如下:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 www.site1.org www.site2.org

让我们将 /var/www/html/index.html 文件改变得更加明显一点。它应该看起来像这样(带有一些额外的文本来识别这是站点 1):

<h1>Hello World</h1>

Web site 1.

重新启动 HTTPD 服务器,已启用对 httpd 配置的更改。然后,你可以从命令行使用 Lynx 文本模式查看网站。

[root@testvm1 ~]# systemctl restart httpd
[root@testvm1 ~]# lynx www.site1.org

                                              Hello World 
  Web site 1.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

你可以看到原始网站的修改内容,没有明显的错误,先按下 Q 键,然后按 Y 退出 Lynx Web 浏览器。

配置第二个站点

现在你已经准备好建立第二个网站。使用以下命令创建新的网站目录结构:

[root@testvm1 html]# mkdir -p /var/www/html2

注意,第二个站点只是第二个 html 目录,与第一个站点位于同一 /var/www 目录下。

现在创建一个新的索引文件 /var/www/html2/index.html,其中包含以下内容(此索引文件稍有不同,以区别于原来的网站):

<h1>Hello World -- Again</h1>

Web site 2.

httpd.conf 中为第二个站点创建一个新的配置节,并将其放在上一个虚拟主机配置节下面(这两个应该看起来非常相似)。此节告诉 Web 服务器在哪里可以找到第二个站点的 HTML 文件。

<VirtualHost 127.0.0.1:80>
    DocumentRoot /var/www/html2
    ServerName www.site2.org
</VirtualHost>

重启 HTTPD,并使用 Lynx 来查看结果。

[root@testvm1 httpd]# systemctl restart httpd
[root@testvm1 httpd]# lynx www.site2.org

                                    Hello World -- Again

   Web site 2.

<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

在这里,我压缩了输出结果以适应这个空间。页面的差异表明这是第二个站点。要同时显示两个站点,请打开另一个终端会话并使用 Lynx Web 浏览器查看另一个站点。

其他考虑

这个简单的例子展示了如何使用 Apache HTTPD 服务器的单个实例来服务于两个站点。当考虑其他因素时,配置虚拟主机会变得有点复杂。

例如,你可能希望为这些网站中的一个或全部使用一些 CGI 脚本。为此,你可能为 CGI 程序在 /var/www 目录下创建一些目录:/var/www/cgi-bin/var/www/cgi-bin2,以与 HTML 目录命名一致。然后,你需要将配置指令添加到虚拟主机节,以指定 CGI 脚本的目录位置。每个站点可以有下载文件的目录。这还需要相应虚拟主机节中的条目。

Apache 网站描述了管理多个站点的其他方法,以及从性能调优到安全性的配置选项。

Apache 是一个强大的 Web 服务器,可以用来管理从简单到高度复杂的网站。尽管其总体市场份额在缩小,但它仍然是互联网上最常用的 HTTPD 服务器。


via: https://opensource.com/article/18/3/configuring-multiple-web-sites-apache

作者:David Both 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Linux 桌面生态中有多种窗口管理器(WM)。有些是作为桌面环境的一部分开发的。有的则被用作独立程序。平铺窗口管理器就是这种情况,它提供了一个更轻量级的自定义环境。本文介绍了五种这样的平铺窗口管理器供你试用。

i3

i3 是最受欢迎的平铺窗口管理器之一。与大多数其他此类 WM 一样,i3 专注于低资源消耗和用户可定制性。

您可以参考 Magazine 上的这篇文章了解 i3 安装细节以及如何配置它。

sway

sway 是一个平铺 Wayland 合成器。它有与现有 i3 配置兼容的优点,因此你可以使用它来替换 i3 并使用 Wayland 作为显示协议。

您可以使用 dnf 从 Fedora 仓库安装 sway:

$ sudo dnf install sway

如果你想从 i3 迁移到 sway,这里有一个迁移指南

Qtile

Qtile 是另一个平铺管理器,也恰好是用 Python 编写的。默认情况下,你在位于 ~/.config/qtile/config.py 下的 Python 脚本中配置 Qtile。当此脚本不存在时,Qtile 会使用默认配置

Qtile 使用 Python 的一个好处是你可以编写脚本来控制 WM。例如,以下脚本打印屏幕详细信息:

> from libqtile.command import Client
> c = Client()
> print(c.screen.info)
{'index': 0, 'width': 1920, 'height': 1006, 'x': 0, 'y': 0}

要在 Fedora 上安装 Qlite,请使用以下命令:

$ sudo dnf install qtile

dwm

dwm 窗口管理器更侧重于轻量级。该项目的一个目标是保持 dwm 最小。例如,整个代码库从未超过 2000 行代码。另一方面,dwm 不容易定制和配置。实际上,改变 dwm 默认配置的唯一方法是编辑源代码并重新编译程序

如果你想尝试默认配置,你可以使用 dnf 在 Fedora 中安装 dwm:

$ sudo dnf install dwm

对于那些想要改变 dwm 配置的人,Fedora 中有一个 dwm-user 包。该软件包使用用户主目录中 ~/.dwm/config.h 的配置自动重新编译 dwm。

awesome

awesome 最初是作为 dwm 的一个分支开发,使用外部配置文件提供 WM 的配置。配置通过 Lua 脚本完成,这些脚本允许你编写脚本以自动执行任务或创建 widget。

你可以使用这个命令在 Fedora 上安装 awesome:

$ sudo dnf install awesome

via: https://fedoramagazine.org/5-cool-tiling-window-managers/

作者:Clément Verna 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

iptables 是一款控制系统进出流量的强大配置工具。

现代 Linux 内核带有一个叫 Netfilter 的数据包过滤框架。Netfilter 提供了允许、丢弃以及修改等操作来控制进出系统的流量数据包。基于 Netfilter 框架的用户层命令行工具 iptables 提供了强大的防火墙配置功能,允许你添加规则来构建防火墙策略。iptables 丰富复杂的功能以及其巴洛克式命令语法可能让人难以驾驭。我们就来探讨一下其中的一些功能,提供一些系统管理员解决某些问题需要的使用技巧。

避免封锁自己

应用场景:假设你将对公司服务器上的防火墙规则进行修改,你需要避免封锁你自己以及其他同事的情况(这将会带来一定时间和金钱的损失,也许一旦发生马上就有部门打电话找你了)

技巧 #1: 开始之前先备份一下 iptables 配置文件。

用如下命令备份配置文件:

/sbin/iptables-save > /root/iptables-works

技巧 #2: 更妥当的做法,给文件加上时间戳。

用如下命令加时间戳:

/sbin/iptables-save > /root/iptables-works-`date +%F`

然后你就可以生成如下名字的文件:

/root/iptables-works-2018-09-11

这样万一使得系统不工作了,你也可以很快的利用备份文件恢复原状:

/sbin/iptables-restore < /root/iptables-works-2018-09-11

技巧 #3: 每次创建 iptables 配置文件副本时,都创建一个指向最新的文件的链接。

ln –s /root/iptables-works-`date +%F` /root/iptables-works-latest

技巧 #4: 将特定规则放在策略顶部,底部放置通用规则。

避免在策略顶部使用如下的一些通用规则:

iptables -A INPUT -p tcp --dport 22 -j DROP

你在规则中指定的条件越多,封锁自己的可能性就越小。不要使用上面非常通用的规则,而是使用如下的规则:

iptables -A INPUT -p tcp --dport 22 –s 10.0.0.0/8 –d 192.168.100.101 -j DROP

此规则表示在 INPUT 链尾追加一条新规则,将源地址为 10.0.0.0/8、 目的地址是 192.168.100.101、目的端口号是 22--dport 22 ) 的 TCP(-p tcp )数据包通通丢弃掉。

还有很多方法可以设置更具体的规则。例如,使用 -i eth0 将会限制这条规则作用于 eth0 网卡,对 eth1 网卡则不生效。

技巧 #5: 在策略规则顶部将你的 IP 列入白名单。

这是一个有效地避免封锁自己的设置:

iptables -I INPUT -s <your IP> -j ACCEPT

你需要将该规则添加到策略首位置。-I 表示则策略首部插入规则,-A 表示在策略尾部追加规则。

技巧 #6: 理解现有策略中的所有规则。

不犯错就已经成功了一半。如果你了解 iptables 策略背后的工作原理,使用起来更为得心应手。如果有必要,可以绘制流程图来理清数据包的走向。还要记住:策略的预期效果和实际效果可能完全是两回事。

设置防火墙策略

应用场景:你希望给工作站配置具有限制性策略的防火墙。

技巧 #1: 设置默认规则为丢弃

# Set a default policy of DROP
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

技巧 #2: 将用户完成工作所需的最少量服务设置为允许

该策略需要允许工作站能通过 DHCP(-p udp --dport 67:68 -sport 67:68)来获取 IP 地址、子网掩码以及其他一些信息。对于远程操作,需要允许 SSH 服务(-dport 22),邮件服务(--dport 25),DNS 服务(--dport 53),ping 功能(-p icmp),NTP 服务(--dport 123 --sport 123)以及 HTTP 服务(-dport 80)和 HTTPS 服务(--dport 443)。

# Set a default policy of DROP
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

# Accept any related or established connections
-I INPUT  1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow all traffic on the loopback interface
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

# Allow outbound DHCP request
-A OUTPUT –o eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT

# Allow inbound SSH
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW  -j ACCEPT

# Allow outbound email
-A OUTPUT -i eth0 -p tcp -m tcp --dport 25 -m state --state NEW  -j ACCEPT

# Outbound DNS lookups
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT

# Outbound PING requests
-A OUTPUT –o eth0 -p icmp -j ACCEPT

# Outbound Network Time Protocol (NTP) requests
-A OUTPUT –o eth0 -p udp --dport 123 --sport 123 -j ACCEPT

# Outbound HTTP
-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT

COMMIT

限制 IP 地址范围

应用场景:贵公司的 CEO 认为员工在 Facebook 上花费过多的时间,需要采取一些限制措施。CEO 命令下达给 CIO,CIO 命令 CISO,最终任务由你来执行。你决定阻止一切到 Facebook 的访问连接。首先你使用 host 或者 whois 命令来获取 Facebook 的 IP 地址。

host -t a www.facebook.com
www.facebook.com is an alias for star.c10r.facebook.com.
star.c10r.facebook.com has address 31.13.65.17
whois 31.13.65.17 | grep inetnum
inetnum:        31.13.64.0 - 31.13.127.255

然后使用 CIDR 到 IPv4 转换 页面来将其转换为 CIDR 表示法。然后你得到 31.13.64.0/18 的地址。输入以下命令来阻止对 Facebook 的访问:

iptables -A OUTPUT -p tcp -i eth0 –o eth1 –d 31.13.64.0/18 -j DROP

按时间规定做限制 - 场景1

应用场景:公司员工强烈反对限制一切对 Facebook 的访问,这导致了 CEO 放宽了要求(考虑到员工的反对以及他的助理提醒说她负责更新他的 Facebook 页面)。然后 CEO 决定允许在午餐时间访问 Facebook(中午 12 点到下午 1 点之间)。假设默认规则是丢弃,使用 iptables 的时间功能便可以实现。

iptables –A OUTPUT -p tcp -m multiport --dport http,https -i eth0 -o eth1 -m time --timestart 12:00 –timestop 13:00 –d 31.13.64.0/18 -j ACCEPT

该命令中指定在中午12点(--timestart 12:00)到下午 1 点(--timestop 13:00)之间允许(-j ACCEPT)到 Facebook.com (-d [31.13.64.0/18][5])的 http 以及 https (-m multiport --dport http,https)的访问。

按时间规定做限制 - 场景2

应用场景:在计划系统维护期间,你需要设置凌晨 2 点到 3 点之间拒绝所有的 TCP 和 UDP 访问,这样维护任务就不会受到干扰。使用两个 iptables 规则可实现:

iptables -A INPUT -p tcp -m time --timestart 02:00 --timestop 03:00 -j DROP
iptables -A INPUT -p udp -m time --timestart 02:00 --timestop 03:00 -j DROP

该规则禁止(-j DROP)在凌晨2点(--timestart 02:00)到凌晨3点(--timestop 03:00)之间的 TCP 和 UDP (-p tcp and -p udp)的数据进入(-A INPUT)访问。

限制连接数量

应用场景:你的 web 服务器有可能受到来自世界各地的 DoS 攻击,为了避免这些攻击,你可以限制单个 IP 地址到你的 web 服务器创建连接的数量:

iptables –A INPUT –p tcp –syn -m multiport -–dport http,https –m connlimit -–connlimit-above 20 –j REJECT -–reject-with-tcp-reset

分析一下上面的命令。如果单个主机在一分钟之内新建立(-p tcp -syn)超过 20 个(-connlimit-above 20)到你的 web 服务器(--dport http,https)的连接,服务器将拒绝(-j REJECT)建立新的连接,然后通知对方新建连接被拒绝(--reject-with-tcp-reset)。

监控 iptables 规则

应用场景:由于数据包会遍历链中的规则,iptables 遵循 “首次匹配获胜” 的原则,因此经常匹配的规则应该靠近策略的顶部,而不太频繁匹配的规则应该接近底部。 你怎么知道哪些规则使用最多或最少,可以在顶部或底部附近监控?

技巧 #1: 查看规则被访问了多少次

使用命令:

iptables -L -v -n –line-numbers

-L 选项列出链中的所有规则。因为没有指定具体哪条链,所有链规则都会被输出,使用 -v 选项显示详细信息,-n 选项则显示数字格式的数据包和字节计数器,每个规则开头的数值表示该规则在链中的位置。

根据数据包和字节计数的结果,你可以将访问频率最高的规则放到顶部,将访问频率最低的规则放到底部。

技巧 #2: 删除不必要的规则

哪条规则从来没有被访问过?这些可以被清除掉。用如下命令查看:

iptables -nvL | grep -v "0     0"

注意:两个数字 0 之间不是 Tab 键,而是 5 个空格。

技巧 #3: 监控正在发生什么

可能你也想像使用 top 命令一样来实时监控 iptables 的情况。使用如下命令来动态监视 iptables 中的活动,并仅显示正在遍历的规则:

watch --interval=5 'iptables -nvL | grep -v "0     0"'

watch 命令通过参数 iptables -nvL | grep -v “0 0“ 每隔 5 秒输出 iptables 的动态。这条命令允许你查看数据包和字节计数的变化。

输出日志

应用场景:经理觉得你这个防火墙员工的工作质量杠杠的,但如果能有网络流量活动日志最好了。有时候这比写一份有关工作的报告更有效。

使用工具 FWLogwatch 基于 iptables 防火墙记录来生成日志报告。FWLogwatch 工具支持很多形式的报告并且也提供了很多分析功能。它生成的日志以及月报告使得管理员可以节省大量时间并且还更好地管理网络,甚至减少未被注意的潜在攻击。

这里是一个 FWLogwatch 生成的报告示例:

不要满足于允许和丢弃规则

本文中已经涵盖了 iptables 的很多方面,从避免封锁自己、配置 iptables 防火墙以及监控 iptables 中的活动等等方面介绍了 iptables。你可以从这里开始探索 iptables 甚至获取更多的使用技巧。


via: https://opensource.com/article/18/10/iptables-tips-and-tricks

作者:Gary Smith 选题:lujun9972 译者:jrg 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

前段时间,我写了一篇在安装 Windows 后在 Arch Linux 上如何重新安装 Grub的教程。

几周前,我不得不在我的笔记本上从头开始重新安装 Arch Linux,同时我发现安装 Grub 并不像我想的那么简单。

出于这个原因,由于在新安装 Arch Linux 时在 UEFI bios 中安装 Grub 并不容易,所以我要写这篇教程。

定位 EFI 分区

在 Arch Linux 上安装 Grub 的第一件重要事情是定位 EFI 分区。让我们运行以下命令以找到此分区:

# fdisk -l

我们需要检查标记为 EFI System 的分区,我这里是 /dev/sda2

之后,我们需要在例如 /boot/efi 上挂载这个分区:

# mkdir /boot/efi
# mount /dev/sdb2 /boot/efi

另一件重要的事情是将此分区添加到 /etc/fstab 中。

安装 Grub

现在我们可以在我们的系统中安装 Grub:

# grub-mkconfig -o /boot/grub/grub.cfg
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

自动将 Windows 添加到 Grub 菜单中

为了自动将 Windows 条目添加到 Grub 菜单,我们需要安装 os-prober:

# pacman -Sy os-prober

要添加它,让我们运行以下命令:

# os-prober
# grub-mkconfig -o /boot/grub/grub.cfg
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

你可以在这里找到更多关于在 Arch Linux 上 Grub 的信息。


via: http://fasterland.net/how-to-install-grub-on-arch-linux-uefi.html

作者:Francesco Mondello 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Facebook 在人工智能项目中广泛使用自己的开源 AI 框架 PyTorch,最近,他们已经发布了 PyTorch 1.0 的预览版本。

如果你尚不了解,PyTorch 是一个基于 Python 的科学计算库。

PyTorch 利用 GPU 超强的运算能力 来实现复杂的 张量 计算 和 深度神经网络。 因此, 它被世界各地的研究人员和开发人员广泛使用。

这一新的可以投入使用的 预览版 已于 2018 年 10 月 2 日周二在旧金山 The Midway 举办的 PyTorch 开发人员大会 宣布。

PyTorch 1.0 候选版本的亮点

PyTorhc is Python based open source AI framework from Facebook

候选版本中的一些主要新功能包括:

1、 JIT

JIT 是一个编译工具集,使研究和生产更加接近。 它包含一个基于 Python 语言的叫做 Torch Script 的脚本语言,也有能使现有代码与它自己兼容的方法。

2、 全新的 torch.distributed 库: “C10D”

“C10D” 能够在不同的后端上启用异步操作, 并在较慢的网络上提高性能。

3、 C++ 前端 (实验性功能)

虽然它被特别提到是一个不稳定的 API (估计是在预发行版中), 这是一个 PyTorch 后端的纯 C++ 接口, 遵循 API 和建立的 Python 前端的体系结构,以实现高性能、低延迟的研究和开发直接安装在硬件上的 C++ 应用程序。

想要了解更多,可以在 GitHub 上查看完整的 更新说明

第一个 PyTorch 1.0 的稳定版本将在夏季发布。(LCTT 译注:此信息可能有误)

在 Linux 上安装 PyTorch

为了安装 PyTorch v1.0rc0, 开发人员建议使用 conda, 同时也可以按照本地安装页面所示,使用其他方法可以安装,所有必要的细节详见文档。

前提

  • Linux
  • Pip
  • Python
  • CUDA (对于使用 Nvidia GPU 的用户)

我们已经知道如何安装和使用 Pip,那就让我们来了解如何使用 Pip 安装 PyTorch。

请注意,PyTorch 具有 GPU 和仅限 CPU 的不同安装包。你应该安装一个适合你硬件的安装包。

安装 PyTorch 的旧版本和稳定版

如果你想在 GPU 机器上安装稳定版(0.4 版本),使用:

pip install torch torchvision

使用以下两个命令,来安装仅用于 CPU 的稳定版:

pip install http://download.pytorch.org/whl/cpu/torch-0.4.1-cp27-cp27mu-linux_x86_64.whl
pip install torchvision

安装 PyTorch 1.0 候选版本

使用如下命令安装 PyTorch 1.0 RC GPU 版本:

pip install torch_nightly -f https://download.pytorch.org/whl/nightly/cu92/torch_nightly.html

如果没有GPU,并且更喜欢使用 仅限 CPU 版本,使用如下命令:

pip install torch_nightly -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html

验证 PyTorch 安装

使用如下简单的命令,启动终端上的 python 控制台:

python

现在,按行输入下面的示例代码以验证您的安装:

from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)

你应该得到如下输出:

tensor([[0.3380, 0.3845, 0.3217],
 [0.8337, 0.9050, 0.2650],
 [0.2979, 0.7141, 0.9069],
 [0.1449, 0.1132, 0.1375],
 [0.4675, 0.3947, 0.1426]])

若要检查是否可以使用 PyTorch 的 GPU 功能, 可以使用以下示例代码:

import torch
torch.cuda.is_available()

输出结果应该是:

True

支持 PyTorch 的 AMD GPU 仍在开发中, 因此, 尚未按报告提供完整的测试覆盖,如果您有 AMD GPU ,请在这里提出建议。

现在让我们来看看一些广泛使用 PyTorch 的研究项目:

基于 PyTorch 的持续研究项目

领先的 GPU 制造商英伟达在更新这方面最近的发展,你也可以阅读正在进行的合作的研究。

我们应该如何应对这种 PyTorch 的能力?

想到 Facebook 在社交媒体算法中应用如此令人惊叹的创新项目, 我们是否应该感激这一切或是感到惊恐?这几乎是天网)! 这一新改进的发布的 PyTorch 肯定会推动事情进一步向前! 在下方评论,随时与我们分享您的想法!


via: https://itsfoss.com/pytorch-open-source-ai-framework/

作者:Avimanyu Bandyopadhyay 选题:lujun9972 译者:distant1219 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

学习一些 Linux ls 命令最有用的变化。

我在 Linux 中最先学到的命令之一就是 ls。了解系统中文件所在目录中的内容非常重要。能够查看和修改不仅仅是一些文件还有所有文件也很重要。

我的第一个 Linux 备忘录是单页 Linux 手册,它于 1999 年发布,成了我的首选参考资料。当我开始探索 Linux 时,我把它贴在桌子上并经常参考它。它在第一页第一列的底部介绍了 ls -l 列出文件的命令。

之后,我将学习这个最基本命令的其它迭代。通过 ls 命令,我开始了解 Linux 文件权限的复杂性,以及哪些是我的文件,哪些需要 root 或者 sudo 权限来修改。随着时间的推移,我习惯了使用命令行,虽然我仍然使用 ls -l 来查找目录中的文件,但我经常使用 ls -al,这样我就可以看到可能需要更改的隐藏文件,比如那些配置文件。

根据 Eric Fischer 在 Linux 文档项目中关于 ls 命令的文章,该命令的起源可以追溯到 1961 年 MIT 的 相容分时系统 Compatible Time-Sharing System (CTSS)上的 listf 命令。当 CTSS 被 Multics 代替时,命令变为 list,并有像 list -all 的开关。根据维基百科ls 出现在 AT&T Unix 的原始版本中。我们今天在 Linux 系统上使用的 ls 命令来自 GNU Core Utilities

大多数时候,我只使用几个迭代的命令。我通常用 lsls -al 查看目录内容,但是你还应该熟悉许多其它选项。

ls -l 提供了一个简单的目录列表:

在我的 Fedora 28 系统的手册页中,我发现 ls 还有许多其它选项,所有这些选项都提供了有关 Linux 文件系统的有趣且有用的信息。通过在命令提示符下输入 man ls,我们可以开始探索其它一些选项:

要按文件大小对目录进行排序,请使用 ls -lS

要以相反的顺序列出内容,请使用 ls -lr

要按列列出内容,请使用 ls -c

ls -al 提供了同一目录中所有文件的列表:

以下是我认为有用且有趣的一些其它选项:

  • 仅列出目录中的 .txt 文件:ls *.txt
  • 按文件大小列出:ls -s
  • 按时间和日期排序:ls -t
  • 按扩展名排序:ls -X
  • 按文件大小排序:ls -S
  • 带有文件大小的长格式:ls -ls

要生成指定格式的目录列表并将其定向到文件供以后查看,请输入 ls -al > mydirectorylist。最后,我找到的一个更奇特的命令是 ls -R,它提供了计算机上所有目录及其内容的递归列表。

有关 ls 命令的所有迭代的完整列表,请参阅 GNU Core Utilities


via: https://opensource.com/article/18/10/ls-command

作者:Don Watkins 选题:lujun9972 译者:geekpi 校对:pityonline

本文由 LCTT 原创编译,Linux中国 荣誉推出