Pradeep Kumar 发布的文章

嵌套虚拟化意味着在虚拟机内配置虚拟化环境。换句话说,我们可以说嵌套虚拟化是 虚拟机管理程序 hypervisor 的一个特性,它允许我们通过虚拟化管理程序(宿主机)的硬件加速在虚拟服务器内安装和运行虚拟机。

在这篇文章中,我们将讨论如何在 CentOS 7 / RHEL 7 的 KVM 上启用嵌套虚拟化。我假定您已经配置过 KVM 管理程序。如果您不熟悉如何安装和配置 KVM 管理程序,请参考以下文章。

在 CentOS 7.x 和 RHEL 7.x 安装 KVM 管理程序

让我们进入虚拟化管理程序,验证您的 KVM 宿主机是否启用了嵌套虚拟化。

基于 Intel 的处理器运行以下命令:

[root@kvm-hypervisor ~]# cat /sys/module/kvm_intel/parameters/nested
N

基于 AMD 的处理器运行以下命令:

[root@kvm-hypervisor ~]# cat /sys/module/kvm_amd/parameters/nested
N

上述命令输出 N 表示嵌套虚拟化是禁用的。如果我们得到的输出是 Y 则表示在您的宿主机已启用嵌套虚拟化。

现在启用嵌套虚拟化,使用以下内容创建一个文件名为 /etc/modprobe.d/kvm-nested.conf 的文件:

[root@kvm-hypervisor ~]# vi /etc/modprobe.d/kvm-nested.conf
options kvm-intel nested=1
options kvm-intel enable_shadow_vmcs=1
options kvm-intel enable_apicv=1
options kvm-intel ept=1

保存并退出文件。

现在移除 kvm_intel 模块然后通过 modprobe 命令添加同样的模块。在移除模块之前,确保虚拟机已关机,否则我们会得到像 “modprobe: FATAL: Module kvm\_intel is in use” 这样的错误信息。

[root@kvm-hypervisor ~]# modprobe -r kvm_intel
[root@kvm-hypervisor ~]# modprobe -a kvm_intel

现在验证嵌套虚拟化功能是否启用。

[root@kvm-hypervisor ~]# cat /sys/module/kvm_intel/parameters/nested
Y

测试嵌套虚拟化

假设我们在 KVM 管理程序上有一台已经启用了嵌套虚拟化的名为 “director” 的虚拟机。在测试之前,确保 CPU 模式为 “host-modle” 或 “host-passthrough” ,使用 Virt-Manager 或 virtsh 编辑命令检查虚拟机的 CPU 模式。

cpu_mode_vm_kvm

现在登录 director 这台虚拟机并运行 lscpulsmod 命令。

[root@kvm-hypervisor ~]# ssh 192.168.126.1 -l root
[email protected]'s password:
Last login: Sun Dec 10 07:05:59 2017 from 192.168.126.254
[root@director ~]# lsmod | grep kvm
kvm_intel             170200  0
kvm                   566604  1 kvm_intel
irqbypass              13503  1 kvm
[root@director ~]# lscpu

lscpu_command_rhel7_centos7

让我们试着在 director 这台虚拟机的虚拟管理器 GUI 或 virt-install 命令创建一台虚拟机,在我的情况下我使用 virt-install 命令。

[root@director ~]# virt-install  -n Nested-VM  --description "Test Nested VM"  --os-type=Linux  --os-variant=rhel7  --ram=2048  --vcpus=2  --disk path=/var/lib/libvirt/images/nestedvm.img,bus=virtio,size=10  --graphics none  --location /var/lib/libvirt/images/CentOS-7-x86_64-DVD-1511.iso --extra-args console=ttyS0
Starting install...
Retrieving file .treeinfo...                                                   | 1.1 kB  00:00:00
Retrieving file vmlinuz...                                                     | 4.9 MB  00:00:00
Retrieving file initrd.img...                                                  |  37 MB  00:00:00
Allocating 'nestedvm.img'                                                      |  10 GB  00:00:00
Connected to domain Nested-VM
Escape character is ^]
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.0-327.el7.x86_64 ([email protected]) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015
………………………………………………

cli-installer-virt-install-command-kvm

这证实了嵌套虚拟化已成功启用,因为我们能在虚拟机内创建虚拟机。

这篇文章到此结束,请分享您的反馈和意见。


via: https://www.linuxtechi.com/enable-nested-virtualization-kvm-centos-7-rhel-7/

作者:Pradeep Kumar 译者:zjon 校对:wxy

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

ncat 或者说 nc 是一款功能类似 cat 的工具,但是是用于网络的。它是一款拥有多种功能的 CLI 工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。

ncat/nc 既是一个端口扫描工具,也是一款安全工具,还能是一款监测工具,甚至可以做为一个简单的 TCP 代理。 由于有这么多的功能,它被誉为是网络界的瑞士军刀。 这是每个系统管理员都应该知道并且掌握它。

在大多数 Debian 发行版中,nc 是默认可用的,它会在安装系统的过程中自动被安装。 但是在 CentOS 7 / RHEL 7 的最小化安装中,nc 并不会默认被安装。 你需要用下列命令手工安装。

[root@linuxtechi ~]# yum install nmap-ncat -y

系统管理员可以用它来审计系统安全,用它来找出开放的端口然后保护这些端口。 管理员还能用它作为客户端来审计 Web 服务器、telnet 服务器、邮件服务器等, 通过 nc 我们可以控制发送的每个字符,也可以查看对方的回应。

我们还可以用它捕获客户端发送的数据以此来了解这些客户端是做什么的。

在本文中,我们会通过 10 个例子来学习如何使用 nc 命令。

例子: 1) 监听入站连接

通过 -l 选项,ncat 可以进入监听模式,使我们可以在指定端口监听入站连接。 完整的命令是这样的:

$ ncat -l port_number

比如,

$ ncat -l 8080

服务器就会开始在 8080 端口监听入站连接。

例子: 2) 连接远程系统

使用下面命令可以用 nc 来连接远程系统,

$ ncat IP_address port_number

让我们来看个例子,

$ ncat 192.168.1.100 80

这会创建一个连接,连接到 IP 为 192.168.1.100 的服务器上的 80 端口,然后我们就可以向服务器发送指令了。 比如我们可以输入下面内容来获取完整的网页内容

GET / HTTP/1.1

或者获取页面名称,

GET / HTTP/1.1

或者我们可以通过以下方式获得操作系统指纹标识,

HEAD / HTTP/1.1

这会告诉我们使用的是什么软件来运行这个 web 服务器的。

例子: 3) 连接 UDP 端口

默认情况下,nc 创建连接时只会连接 TCP 端口。 不过我们可以使用 -u 选项来连接到 UDP 端口,

$ ncat -l -u 1234

现在我们的系统会开始监听 UDP 的 1234 端口,我们可以使用下面的 netstat 命令来验证这一点,

$ netstat -tunlp | grep 1234
udp           0          0 0.0.0.0:1234                 0.0.0.0:*               17341/nc
udp6          0          0 :::1234                      :::*                    17341/nc

假设我们想发送或者说测试某个远程主机 UDP 端口的连通性,我们可以使用下面命令,

$ ncat -v -u {host-ip} {udp-port}

比如:

[root@localhost ~]# ncat -v -u 192.168.105.150 53
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 192.168.105.150:53。

例子: 4) 将 nc 作为聊天工具

nc 也可以作为聊天工具来用,我们可以配置服务器监听某个端口,然后从远程主机上连接到服务器的这个端口,就可以开始发送消息了。 在服务器这端运行:

$ ncat -l 8080

在远程客户端主机上运行:

$ ncat 192.168.1.100 8080

之后开始发送消息,这些消息会在服务器终端上显示出来。

例子: 5) 将 nc 作为代理

nc 也可以用来做代理。比如下面这个例子,

$ ncat -l 8080 | ncat 192.168.1.200 80

所有发往我们服务器 8080 端口的连接都会自动转发到 192.168.1.200 上的 80 端口。 不过由于我们使用了管道,数据只能被单向传输。 要同时能够接受返回的数据,我们需要创建一个双向管道。 使用下面命令可以做到这点:

$ mkfifo 2way
$ ncat -l 8080 0<2way | ncat 192.168.1.200 80 1>2way

现在你可以通过 nc 代理来收发数据了。

例子: 6) 使用 nc 拷贝文件

nc 还能用来在系统间拷贝文件,虽然这么做并不推荐,因为绝大多数系统默认都安装了 ssh/scp。 不过如果你恰好遇见个没有 ssh/scp 的系统的话, 你可以用 nc 来作最后的努力。

在要接受数据的机器上启动 nc 并让它进入监听模式:

$ ncat -l  8080 > file.txt

现在去要被拷贝数据的机器上运行下面命令:

$ ncat 192.168.1.100 8080 --send-only < data.txt

这里,data.txt 是要发送的文件。 -–send-only 选项会在文件拷贝完后立即关闭连接。 如果不加该选项, 我们需要手工按下 ctrl+c 来关闭连接。

我们也可以用这种方法拷贝整个磁盘分区,不过请一定要小心。

例子: 7) 通过 nc 创建后门

nc 命令还可以用来在系统中创建后门,并且这种技术也确实被黑客大量使用。 为了保护我们的系统,我们需要知道它是怎么做的。 创建后门的命令为:

$ ncat -l 10000 -e /bin/bash

-e 标志将一个 bash 与端口 10000 相连。现在客户端只要连接到服务器上的 10000 端口就能通过 bash 获取我们系统的完整访问权限:

$ ncat 192.168.1.100 10000

例子: 8) 通过 nc 进行端口转发

我们通过选项 -c 来用 nc 进行端口转发,实现端口转发的语法为:

$ ncat -u -l  80 -c  'ncat -u -l 8080'

这样,所有连接到 80 端口的连接都会转发到 8080 端口。

例子: 9) 设置连接超时

nc 的监听模式会一直运行,直到手工终止。 不过我们可以通过选项 -w 设置超时时间:

$ ncat -w 10 192.168.1.100 8080

这回导致连接 10 秒后终止,不过这个选项只能用于客户端而不是服务端。

例子: 10) 使用 -k 选项强制 nc 待命

当客户端从服务端断开连接后,过一段时间服务端也会停止监听。 但通过选项 -k 我们可以强制服务器保持连接并继续监听端口。 命令如下:

$ ncat -l -k 8080

现在即使来自客户端的连接断了也依然会处于待命状态。

自此我们的教程就完了,如有疑问,请在下方留言。


via: https://www.linuxtechi.com/nc-ncat-command-examples-linux-systems/

作者:Pradeep Kumar 译者:lujun9972 校对:wxy

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

Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)是类 Unix 系统中使用最广泛的命令,用于归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用 gzip 或者 bzip2 等技术进行压缩。换言之,tar 命令也可以用于备份:先是归档多个文件和目录到一个单独的 tar 文件或归档文件,然后在需要之时将 tar 文件中的文件和目录释放出来。

本文将介绍 tar 的 17 个实用示例。

tar 命令语法如下:

# tar <选项> <文件>

下面列举 tar 命令中一些常用的选项:

--delete : 从归档文件 (而非磁带) 中删除

-r, --append : 将文件追加到归档文件中

-t, --list : 列出归档文件中包含的内容

--test-label : 测试归档文件卷标并退出

-u, --update : 将已更新的文件追加到归档文件中

-x, --extract, --get : 释放归档文件中文件及目录

-C, --directory=DIR : 执行归档动作前变更工作目录到 DIR

-f, --file=ARCHIVE : 指定 (将要创建或已存在的) 归档文件名

-j, --bip2 : 对归档文件使用 bzip2 压缩

-J, --xz : 对归档文件使用 xz 压缩

-p, --preserve-permissions : 保留原文件的访问权限

-v, --verbose : 显示命令整个执行过程

-z, gzip : 对归档文件使用 gzip 压缩

注 : 在 tar 命令选项中的连接符 - 是可选的(LCTT 译注:不用 - 也没事。这在 GNU 软件里面很罕见,大概是由于 tar 命令更多受到古老的 UNIX 风格影响)。

示例 1:创建一个 tar 归档文件

现在来创建一个 tar 文件,将 /etc/ 目录和 /root/anaconda-ks.cfg 文件打包进去。

[root@linuxtechi ~]# tar -cvf myarchive.tar /etc /root/anaconda-ks.cfg

以上命令会在当前目录创建一个名为 "myarchive" 的 tar 文件,内含 /etc/ 目录和 /root/anaconda-ks.cfg 文件。

其中,-c 选项表示要创建 tar 文件,-v 选项用于输出 tar 的详细过程到屏幕上,-f 选项则是指定归档文件名称。

[root@linuxtechi ~]# ls -l myarchive.tar
-rw-r--r--. 1 root root 22947840 Sep 7 00:24 myarchive.tar
[root@linuxtechi ~]#

示例 2:列出归档文件中的内容

在 tar 命令中使用 –t 选项可以不用释放其中的文件就可以快速列出文件中包含的内容。

[root@linuxtechi ~]# tar -tvf myarchive.tar

列出 tar 文件中的指定的文件和目录。下列命令尝试查看 anaconda-ks.cfg 文件是否存在于 tar 文件中。

[root@linuxtechi ~]# tar -tvf myarchive.tar root/anaconda-ks.cfg
-rw------- root/root 953 2016-08-24 01:33 root/anaconda-ks.cfg
[root@linuxtechi ~]#

示例 3:追加文件到归档(tar)文件中

-r 选项用于向已有的 tar 文件中追加文件。下面来将 /etc/fstab 添加到 data.tar 中。

[root@linuxtechi ~]# tar -rvf data.tar /etc/fstab

注:在压缩过的 tar 文件中无法进行追加文件操作。

示例 4:从 tar 文件中释放文件以及目录

-x 选项用于释放出 tar 文件中的文件和目录。下面来释放上边创建的 tar 文件中的内容。

[root@linuxtechi ~]# tar -xvf myarchive.tar

这个命令会在当前目录中释放出 myarchive.tar 文件中的内容。

示例 5:释放 tar 文件到指定目录

假如你想要释放 tar 文件中的内容到指定的文件夹或者目录,使用 -C 选项后边加上指定的文件的路径。

[root@linuxtechi ~]# tar -xvf myarchive.tar -C /tmp/

示例 6:释放 tar 文件中的指定文件或目录

假设你只要释放 tar 文件中的 anaconda-ks.cfg 到 /tmp 目录。

语法如下:

# tar –xvf {tar-file } {file-to-be-extracted } -C {path-where-to-extract}

[root@linuxtechi tmp]# tar -xvf /root/myarchive.tar root/anaconda-ks.cfg -C /tmp/
root/anaconda-ks.cfg
[root@linuxtechi tmp]# ls -l /tmp/root/anaconda-ks.cfg
-rw-------. 1 root root 953 Aug 24 01:33 /tmp/root/anaconda-ks.cfg
[root@linuxtechi tmp]#

示例 7:创建并压缩归档文件(.tar.gz 或 .tgz)

假设我们需要打包 /etc 和 /opt 文件夹,并用 gzip 工具将其压缩。可以在 tar 命令中使用 -z 选项来实现。这种 tar 文件的扩展名可以是 .tar.gz 或者 .tgz。

[root@linuxtechi ~]# tar -zcpvf myarchive.tar.gz /etc/ /opt/

[root@linuxtechi ~]# tar -zcpvf myarchive.tgz /etc/ /opt/

示例 8:创建并压缩归档文件(.tar.bz2 或 .tbz2)

假设我们需要打包 /etc 和 /opt 文件夹,并使用 bzip2 压缩。可以在 tar 命令中使用 -j 选项来实现。这种 tar 文件的扩展名可以是 .tar.bz2 或者 .tbz。

[root@linuxtechi ~]# tar -jcpvf myarchive.tar.bz2 /etc/ /opt/

[root@linuxtechi ~]# tar -jcpvf myarchive.tbz2 /etc/ /opt/

示例 9:排除指定文件或类型后创建 tar 文件

创建 tar 文件时在 tar 命令中使用 –exclude 选项来排除指定文件或者类型。假设在创建压缩的 tar 文件时要排除 .html 文件。

[root@linuxtechi ~]# tar -zcpvf myarchive.tgz /etc/ /opt/ --exclude=*.html

示例 10:列出 .tar.gz 或 .tgz 文件中的内容

使用 -t 选项可以查看 .tar.gz 或 .tgz 文件中内容。如下:

[root@linuxtechi ~]# tar -tvf myarchive.tgz  | more
.............................................
drwxr-xr-x root/root         0 2016-09-07 08:41 etc/
-rw-r--r-- root/root       541 2016-08-24 01:23 etc/fstab
-rw------- root/root         0 2016-08-24 01:23 etc/crypttab
lrwxrwxrwx root/root         0 2016-08-24 01:23 etc/mtab -> /proc/self/mounts
-rw-r--r-- root/root       149 2016-09-07 08:41 etc/resolv.conf
drwxr-xr-x root/root         0 2016-09-06 03:55 etc/pki/
drwxr-xr-x root/root         0 2016-09-06 03:15 etc/pki/rpm-gpg/
-rw-r--r-- root/root      1690 2015-12-09 04:59 etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
-rw-r--r-- root/root      1004 2015-12-09 04:59 etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7
-rw-r--r-- root/root      1690 2015-12-09 04:59 etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Testing-7
-rw-r--r-- root/root      3140 2015-09-15 06:53 etc/pki/rpm-gpg/RPM-GPG-KEY-foreman
..........................................................

示例 11:列出 .tar.bz2 或 .tbz2 文件中的内容

使用 -t 选项可以查看 .tar.bz2 或 .tbz2 文件中内容。如下:

[root@linuxtechi ~]# tar -tvf myarchive.tbz2  | more
........................................................
rwxr-xr-x root/root         0 2016-08-24 01:25 etc/pki/java/
lrwxrwxrwx root/root         0 2016-08-24 01:25 etc/pki/java/cacerts -> /etc/pki/ca-trust/extracted/java/cacerts
drwxr-xr-x root/root         0 2016-09-06 02:54 etc/pki/nssdb/
-rw-r--r-- root/root     65536 2010-01-12 15:09 etc/pki/nssdb/cert8.db
-rw-r--r-- root/root      9216 2016-09-06 02:54 etc/pki/nssdb/cert9.db
-rw-r--r-- root/root     16384 2010-01-12 16:21 etc/pki/nssdb/key3.db
-rw-r--r-- root/root     11264 2016-09-06 02:54 etc/pki/nssdb/key4.db
-rw-r--r-- root/root       451 2015-10-21 09:42 etc/pki/nssdb/pkcs11.txt
-rw-r--r-- root/root     16384 2010-01-12 15:45 etc/pki/nssdb/secmod.db
drwxr-xr-x root/root         0 2016-08-24 01:26 etc/pki/CA/
drwxr-xr-x root/root         0 2015-06-29 08:48 etc/pki/CA/certs/
drwxr-xr-x root/root         0 2015-06-29 08:48 etc/pki/CA/crl/
drwxr-xr-x root/root         0 2015-06-29 08:48 etc/pki/CA/newcerts/
drwx------ root/root         0 2015-06-29 08:48 etc/pki/CA/private/
drwx------ root/root         0 2015-11-20 06:34 etc/pki/rsyslog/
drwxr-xr-x root/root         0 2016-09-06 03:44 etc/pki/pulp/
..............................................................

示例 12:解压 .tar.gz 或 .tgz 文件

使用 -x-z 选项来解压 .tar.gz 或 .tgz 文件。如下:

[root@linuxtechi ~]# tar -zxpvf myarchive.tgz -C /tmp/

以上命令将 tar 文件解压到 /tmp 目录。

注:现今的 tar 命令会在执行解压动作前自动检查文件的压缩类型,这意味着我们在使用 tar 命令是可以不用指定文件的压缩类型。如下:

[root@linuxtechi ~]# tar -xpvf myarchive.tgz -C /tmp/

示例 13:解压 .tar.bz2 或 .tbz2 文件

使用 -j-x 选项来解压 .tar.bz2 或 .tbz2 文件。如下:

[root@linuxtechi ~]# tar -jxpvf myarchive.tbz2 -C /tmp/

[root@linuxtechi ~]# tar xpvf myarchive.tbz2 -C /tmp/

示例 14:使用 tar 命令进行定时备份

总有一些实时场景需要我们对指定的文件和目录进行打包,已达到日常备份的目的。假设需要每天备份整个 /opt 目录,可以创建一个带 tar 命令的 cron 任务来完成。如下:

[root@linuxtechi ~]# tar -zcvf optbackup-$(date +%Y-%m-%d).tgz /opt/

为以上命令创建一个 cron 任务即可。

示例 15:使用 -T 及 -X 创建压缩归档文件

想像这样一个场景:把想要归档和压缩的文件及目录记录到到一个文件,然后把这个文件当做 tar 命令的传入参数来完成归档任务;而有时候则是需要排除上面提到的这个文件里面记录的特定路径后进行归档和压缩。

在 tar 命令中使用 -T 选项来指定该输入文件,使用 -X 选项来指定包含要排除的文件列表。

假设要归档 /etc、/opt、/home 目录,并排除 /etc/sysconfig/kdump 和 /etc/sysconfig/foreman 文件,可以创建 /root/tar-include 和 /root/tar-exclude 然后分别输入以下内容:

[root@linuxtechi ~]# cat /root/tar-include
/etc
/opt
/home
[root@linuxtechi ~]#
[root@linuxtechi ~]# cat /root/tar-exclude
/etc/sysconfig/kdump
/etc/sysconfig/foreman
[root@linuxtechi ~]#

运行以下命令来创建一个压缩归档文件。

[root@linuxtechi ~]# tar zcpvf mybackup-$(date +%Y-%m-%d).tgz -T /root/tar-include -X /root/tar-exclude

示例 16:查看 .tar、.tgz 和 .tbz2 文件的大小

使用如下命令来查看 (压缩) tar 文件的体积。

[root@linuxtechi ~]# tar -czf - data.tar | wc -c
427
[root@linuxtechi ~]# tar -czf - mybackup-2016-09-09.tgz | wc -c
37956009
[root@linuxtechi ~]# tar -czf - myarchive.tbz2 | wc -c
30835317
[root@linuxtechi ~]#

示例 17:分割体积庞大的 tar 文件为多份小文件

类 Unix 系统中使用 split 命令来将大体积文件分割成小体积文件。大体积的 tar 当然也可以使用这个命令来进行分割。

假设需要将 "mybackup-2016-09-09.tgz" 分割成每份 6 MB 的小文件。

Syntax :  split -b <Size-in-MB> <tar-file-name>.<extension> “prefix-name”
[root@linuxtechi ~]# split -b 6M mybackup-2016-09-09.tgz mybackup-parts

以上命令会在当前目录分割 mybackup-2016-09-09.tgz 文件成为多个 6 MB 的小文件,文件名为 mybackup-partsaa ~ mybackup-partsag。如果在要在分割文件后以数字而非字母来区分,可以在以上的 split 命令使用 -d 选项。

[root@linuxtechi ~]# ls -l mybackup-parts*
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsaa
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsab
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsac
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsad
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsae
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsaf
-rw-r--r--. 1 root root 637219  Sep 10 03:05 mybackup-partsag
[root@linuxtechi ~]#

然后通过网络将这些分割文件转移到其他服务器,就可以合并成为一个单独的 tar 文件了,如下:

[root@linuxtechi ~]# cat mybackup-partsa* > mybackup-2016-09-09.tgz
[root@linuxtechi ~]#

文毕,希望你喜欢 tar 命令的这几个不同的示例。随时评论并分享你的心得。


via: http://www.linuxtechi.com/17-tar-command-examples-in-linux/

作者:Pradeep Kumar 译者:GHLandy 校对:wxy

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

LAMP 方案是一系列自由和开源软件的集合,包含了 Linux、Web 服务器 (Apache)、 数据库服务器 (MySQL / MariaDB) 和 PHP (脚本语言)。LAMP 是那些需要安装和构建动态网页应用的基础平台,比如WordPress、Joomla、OpenCart 和 Drupal。

在这篇文章中,我将描述如何在 Ubuntu Server 16.04 LTS 上安装 LAMP,众所周知 Ubuntu 是一个基于 Linux 的操作系统,因此它构成了 LAMP 的第一个部分,在接下来的操作中,我将默认你已经安装了 Ubuntu Server 16.04。

Apache2 web 服务器的安装 :

在 Ubuntu linux 中,web 服务器是 Apache2,我们可以利用下面的命令来安装它:

linuxtechi@ubuntu:~$ sudo apt update
linuxtechi@ubuntu:~$ sudo apt install apache2 -y

当安装 Apache2 包之后,Apache2 相关的服务是启用的,并在重启后自动运行。在某些情况下,如果你的 Apache2 服务并没有自动运行和启用,你可以利用如下命令来启动和启用它。

linuxtechi@ubuntu:~$ sudo systemctl start apache2.service
linuxtechi@ubuntu:~$ sudo systemctl enable apache2.service
linuxtechi@ubuntu:~$ sudo systemctl status apache2.service

如果你开启了 Ubuntu 的防火墙(ufw),那么你可以使用如下的命令来解除 web 服务器的端口(80和443)限制

linuxtechi@ubuntu:~$ sudo ufw status
Status: active
linuxtechi@ubuntu:~$ sudo ufw allow in 'Apache Full'
Rule added
Rule added (v6)
linuxtechi@ubuntu:~$

现在开始访问你的 web 服务器 :

打开浏览器并输入服务器的IP地址或者主机名(http://IP\_Address\_OR\_Host\_Name),在我的例子中我的服务器 IP是‘192.168.1.13’

数据库服务器的安装 (MySQL Server 5.7) :

MySQL 和 MariaDB 都是 Ubuntu 16.04 中的数据库服务器。 MySQL Server 和 MariaDB Server的安装包都可以在Ubuntu 的默认软件源中找到,我们可以选择其中的一个来安装。通过下面的命令来在终端中安装mysql服务器。

linuxtechi@ubuntu:~$ sudo apt install mysql-server mysql-client

在安装过程中,它会要求你设置 mysql 服务器 root 帐户的密码。

确认 root 帐户的密码,并点击确定。

MySQL 服务器的安装到此已经结束了, MySQL 服务会自动启动并启用。我们可以通过如下的命令来校验 MySQL 服务的状态。

linuxtechi@ubuntu:~$ sudo systemctl status mysql.service

MariaDB Server的安装 :

在终端中使用如下的命令来安装 Mariadb 10.0 服务器。

linuxtechi@ubuntu:~$ sudo apt install mariadb-server

运行如下的命令来设置 MariaDB root 帐户的密码,还可以用来关闭某些选项,比如关闭远程登录功能。

linuxtechi@ubuntu:~$ sudo mysql_secure_installation

PHP 脚本语言的安装:

PHP 7 已经存在于 Ubuntu 的软件源中了,在终端中执行如下的命令来安装 PHP 7:

linuxtechi@ubuntu:~$ sudo apt install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi php7.0 libapache2-mod-php7.0

创建一个简单的 php 页面,并且将它移动到 apache 的文档根目录下 (/var/www/html)

linuxtechi@ubuntu:~$ vi samplepage.php
<?php
phpinfo();
?>

在 vi 中编辑之后,保存并退出该文件。

linuxtechi@ubuntu:~$ sudo mv samplepage.php /var/www/html/

现在你可以从 web 浏览器中访问这个页面, 输入 : “http:///samplepage.php” ,你可以看到如下页面。

以上的页面向我们展示了 PHP 已经完全安装成功了。

phpMyAdmin 的安装:

phpMyAdmin 可以让我们通过它的 web 界面来执行所有与数据库管理和其他数据库操作相关的任务,这个安装包已经存在于 Ubuntu 的软件源中。

利用如下的命令来在 Ubuntu server 16.04 LTS 中安装 phpMyAdmin。

linuxtechi@ubuntu:~$ sudo apt install php-mbstring php7.0-mbstring php-gettext
linuxtechi@ubuntu:~$ sudo systemctl restart apache2.service
linuxtechi@ubuntu:~$ sudo apt install phpmyadmin

在以下的安装过程中,它会提示我们选择 phpMyAdmin 运行的目标服务器。

选择 Apache2 并点击确定。

点击确定来配置 phpMyAdmin 管理的数据库。

指定 phpMyAdmin 向数据库服务器注册时所用的密码。

确认 phpMyAdmin 所需的密码,并点击确认。

现在可以开始尝试访问 phpMyAdmin,打开浏览器并输入 : “http://Server\_IP\_OR\_Host\_Name/phpmyadmin”

使用我们安装时设置的 root 帐户和密码。

当我们点击“Go”的时候,将会重定向到如下所示的 ‘phpMyAdmin’ web界面。

到现在,LAMP 方案已经被成功安装并可以使用了,欢迎分享你的反馈和评论。


via: http://www.linuxtechi.com/lamp-stack-installation-on-ubuntu-server-16-04/

作者:Pradeep Kumar 译者:陆建波 校对:Caroline

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

正如 passwd 命令的名称所示,其用于改变系统用户的密码。如果 passwd 命令由非 root 用户执行,那么它会询问当前用户的密码,然后设置调用该命令的用户的新密码。当此命令由超级用户 root 执行的话,就可以重新设置任何用户的密码,包括不知道当前密码的用户。

在这篇文章中,我们将用实例来介绍 passwd 命令。

语法 :

# passwd {options} {user_name}

可以在 passwd 命令使用不同的选项,列表如下:

例1:更改系统用户的密码

当你使用非 root 用户登录时,比如我使用 ‘linuxtechi’ 登录的情况下,运行 passwd 命令它会重置当前登录用户的密码。

[linuxtechi@linuxworld ~]$ passwd
Changing password for user linuxtechi.
Changing password for linuxtechi.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[linuxtechi@linuxworld ~]$

当你作为 root 用户登录后并运行 passwd 命令时,它默认情况下会重新设置 root 的密码,如果你在 passwd 命令后指定了用户名,它会重置该用户的密码。

[root@linuxworld ~]# passwd
[root@linuxworld ~]# passwd linuxtechi

注意 : 系统用户的密码以加密的形式保存在 /etc/shadow 文件中。

例2:显示密码状态信息

要显示用户密码的状态信息,请在 passwd 命令后使用 -S 选项。

[root@linuxworld ~]# passwd -S linuxtechi
linuxtechi PS 2015-09-20 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@linuxworld ~]#

在上面的输出中,第一个字段显示的用户名,第二个字段显示密码状态(PS = 密码设置,LK = 密码锁定,NP = 无密码),第三个字段显示了上次修改密码的时间,后面四个字段分别显示了密码能更改的最小期限和最大期限,警告期限和没有使用该口令的时长。

例3:显示所有账号的密码状态信息

为了显示所有用户密码的状态信息需要使用 “-aS”选项在passwd 命令中,示例如下所示:

root@localhost:~# passwd -Sa

(LCTT译注:不同发行版/passwd 的行为不同。CentOS6.6 没有测试成功,但 Ubuntu 可以。)

例4:使用 -d 选项删除用户的密码

用我做例子,删除 ‘linuxtechi‘ 用户的密码。

[root@linuxworld ~]# passwd -d linuxtechi
Removing password for user linuxtechi.
passwd: Success
[root@linuxworld ~]#
[root@linuxworld ~]# passwd -S linuxtechi
linuxtechi NP 2015-09-20 0 99999 7 -1 (Empty password.)
[root@linuxworld ~]#

-d” 选项将清空用户密码,并禁用用户登录。

例5:设置密码立即过期

在 passwd 命令中使用 '-e' 选项会立即使用户的密码过期,这将强制用户在下次登录时更改密码。

[root@linuxworld ~]# passwd -e linuxtechi
Expiring password for user linuxtechi.
passwd: Success
[root@linuxworld ~]# passwd -S linuxtechi
linuxtechi PS 1970-01-01 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@linuxworld ~]#

现在尝试用 linuxtechi 用户 SSH 连接到主机。

例6:锁定系统用户的密码

在 passwd 命令中使用 ‘-l‘ 选项能锁定用户的密码,它会在密码的起始位置加上“!”。当他/她的密码被锁定时,用户将不能更改它的密码。

[root@linuxworld ~]# passwd -l linuxtechi
Locking password for user linuxtechi.
passwd: Success
[root@linuxworld ~]# passwd -S linuxtechi
linuxtechi LK 2015-09-20 0 99999 7 -1 (Password locked.)
[root@linuxworld ~]#

例7:使用 -u 选项解锁用户密码

[root@linuxworld ~]# passwd -u linuxtechi
Unlocking password for user linuxtechi.
passwd: Success
[root@linuxworld ~]#

例8:使用 -i 选项设置非活动时间

在 passwd 命令中使用 -i 选项用于设系统用户的非活动时间。当用户(我使用的是linuxtechi用户)密码过期后,用户再经过 ‘n‘ 天后(在我的情况下是10天)没有更改其密码,用户将不能登录。

[root@linuxworld ~]# passwd -i 10 linuxtechi
Adjusting aging data for user linuxtechi.
passwd: Success
[root@linuxworld ~]#
[root@linuxworld ~]# passwd -S linuxtechi
linuxtechi PS 2015-09-20 0 99999 7 10 (Password set, SHA512 crypt.)
[root@linuxworld ~]#

例9:使用 -n 选项设置密码更改的最短时间

在下面的例子中,linuxtechi用户必须在90天内更改密码。0表示用户可以在任何时候更改它的密码。

[root@linuxworld ~]# passwd -n 90 linuxtechi
Adjusting aging data for user linuxtechi.
passwd: Success
[root@linuxworld ~]# passwd -S linuxtechi
linuxtechi PS 2015-09-20 90 99999 7 10 (Password set, SHA512 crypt.)
[root@linuxworld ~]#

例10:使用 -w 选项设置密码过期前的警告期限

-w’ 选项在 passwd 命令中用于设置用户的警告期限。这意味着,n天之后,他/她的密码将过期。

[root@linuxworld ~]# passwd -w 12 linuxtechi
Adjusting aging data for user linuxtechi.
passwd: Success
[root@linuxworld ~]# passwd -S linuxtechi
linuxtechi PS 2015-09-20 90 99999 12 10 (Password set, SHA512 crypt.)
[root@linuxworld ~]#

via: http://www.linuxtechi.com/10-passwd-command-examples-in-linux/

作者:Pradeep Kumar 译者:strugglingyouth 校对:wxy

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

df 即 “可用磁盘” disk free ,用于显示文件系统的磁盘使用情况。默认情况下 df 命令将以每块 1K 的单位进行显示所有当前已挂载的文件系统,如果你想以人类易读的格式显示 df 命令的输出,像这样“df -h”使用 -h 选项。

在这篇文章中,我们将讨论 df 命令在 Linux 下11种不同的实例。

在 Linux 下 df 命令的基本格式为:

# df {options} {mount_point_of_filesystem}

在 df 命令中可用的选项有:

df 的样例输出 :

[root@linux-world ~]# df
Filesystem            1K-blocks   Used Available Use% Mounted on
/dev/mapper/vg00-root  17003304 804668  15311852   5% /
devtmpfs                 771876      0    771876   0% /dev
tmpfs                    777928      0    777928   0% /dev/shm
tmpfs                    777928   8532    769396   2% /run
tmpfs                    777928      0    777928   0% /sys/fs/cgroup
/dev/mapper/vg00-home  14987616  41000  14162232   1% /home
/dev/sda1                487652  62593    395363  14% /boot
/dev/mapper/vg00-var    9948012  48692   9370936   1% /var
/dev/mapper/vg00-sap   14987656  37636  14165636   1% /sap
[root@linux-world ~]#

例1:使用 -a 选项列出所有文件系统的磁盘使用量

当我们在 df 命令中使用 -a 选项时,它会显示所有文件系统的磁盘使用情况。

[root@linux-world ~]# df -a
Filesystem            1K-blocks   Used Available Use% Mounted on
rootfs                 17003304 804668  15311852   5% /
proc                          0      0         0    - /proc
sysfs                         0      0         0    - /sys
devtmpfs                 771876      0    771876   0% /dev
securityfs                    0      0         0    - /sys/kernel/security
tmpfs                    777928      0    777928   0% /dev/shm
devpts                        0      0         0    - /dev/pts
tmpfs                    777928   8532    769396   2% /run
tmpfs                    777928      0    777928   0% /sys/fs/cgroup
cgroup                        0      0         0    - /sys/fs/cgroup/systemd
pstore                        0      0         0    - /sys/fs/pstore
cgroup                        0      0         0    - /sys/fs/cgroup/cpuset
cgroup                        0      0         0    - /sys/fs/cgroup/cpu,cpuacct
cgroup                        0      0         0    - /sys/fs/cgroup/memory
cgroup                        0      0         0    - /sys/fs/cgroup/devices
cgroup                        0      0         0    - /sys/fs/cgroup/freezer
cgroup                        0      0         0    - /sys/fs/cgroup/net_cls
cgroup                        0      0         0    - /sys/fs/cgroup/blkio
cgroup                        0      0         0    - /sys/fs/cgroup/perf_event
cgroup                        0      0         0    - /sys/fs/cgroup/hugetlb
configfs                      0      0         0    - /sys/kernel/config
/dev/mapper/vg00-root  17003304 804668  15311852   5% /
selinuxfs                     0      0         0    - /sys/fs/selinux
systemd-1                     0      0         0    - /proc/sys/fs/binfmt_misc
debugfs                       0      0         0    - /sys/kernel/debug
hugetlbfs                     0      0         0    - /dev/hugepages
mqueue                        0      0         0    - /dev/mqueue
/dev/mapper/vg00-home  14987616  41000  14162232   1% /home
/dev/sda1                487652  62593    395363  14% /boot
/dev/mapper/vg00-var    9948012  48692   9370936   1% /var
/dev/mapper/vg00-sap   14987656  37636  14165636   1% /sap
[root@linux-world ~]#

例2:以人类易读的格式显示 df 命令的输出

在 df 命令中使用-h选项,以人类易读的格式输出(例如,5K,500M 及 5G)

[root@linux-world ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/vg00-root   17G  786M   15G   5% /
devtmpfs               754M     0  754M   0% /dev
tmpfs                  760M     0  760M   0% /dev/shm
tmpfs                  760M  8.4M  752M   2% /run
tmpfs                  760M     0  760M   0% /sys/fs/cgroup
/dev/mapper/vg00-home   15G   41M   14G   1% /home
/dev/sda1              477M   62M  387M  14% /boot
/dev/mapper/vg00-var   9.5G   48M  9.0G   1% /var
/dev/mapper/vg00-sap    15G   37M   14G   1% /sap
[root@linux-world ~]#

例3:显示特定文件系统已使用的空间

假如我们想显示 /sap 文件系统空间的使用情况。

[root@linux-world ~]# df -h /sap/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg00-sap   15G   37M   14G   1% /sap
[root@linux-world ~]#

例4:输出所有已挂载文件系统的类型

-T 选项用在 df 命令中用来显示文件系统的类型。

[root@linux-world ~]# df -T
Filesystem            Type     1K-blocks   Used Available Use% Mounted on
/dev/mapper/vg00-root ext4      17003304 804668  15311852   5% /
devtmpfs              devtmpfs    771876      0    771876   0% /dev
tmpfs                 tmpfs       777928      0    777928   0% /dev/shm
tmpfs                 tmpfs       777928   8532    769396   2% /run
tmpfs                 tmpfs       777928      0    777928   0% /sys/fs/cgroup
/dev/mapper/vg00-home ext4      14987616  41000  14162232   1% /home
/dev/sda1             ext3        487652  62593    395363  14% /boot
/dev/mapper/vg00-var  ext3       9948012  48696   9370932   1% /var
/dev/mapper/vg00-sap  ext3      14987656  37636  14165636   1% /sap
[root@linux-world ~]#

例5:按块大小输出文件系统磁盘使用情况

[root@linux-world ~]# df -k
Filesystem            1K-blocks   Used Available Use% Mounted on
/dev/mapper/vg00-root  17003304 804668  15311852   5% /
devtmpfs                 771876      0    771876   0% /dev
tmpfs                    777928      0    777928   0% /dev/shm
tmpfs                    777928   8532    769396   2% /run
tmpfs                    777928      0    777928   0% /sys/fs/cgroup
/dev/mapper/vg00-home  14987616  41000  14162232   1% /home
/dev/sda1                487652  62593    395363  14% /boot
/dev/mapper/vg00-var    9948012  48696   9370932   1% /var
/dev/mapper/vg00-sap   14987656  37636  14165636   1% /sap
[root@linux-world ~]#

例6:输出文件系统的 inode 信息

-i 选项用在 df 命令用于显示文件系统的 inode 信息。

所有文件系统的 inode 信息:

[root@linux-world ~]# df -i
Filesystem             Inodes IUsed   IFree IUse% Mounted on
/dev/mapper/vg00-root 1089536 22031 1067505    3% /
devtmpfs               192969   357  192612    1% /dev
tmpfs                  194482     1  194481    1% /dev/shm
tmpfs                  194482   420  194062    1% /run
tmpfs                  194482    13  194469    1% /sys/fs/cgroup
/dev/mapper/vg00-home  960992    15  960977    1% /home
/dev/sda1              128016   337  127679    1% /boot
/dev/mapper/vg00-var   640848  1235  639613    1% /var
/dev/mapper/vg00-sap   960992    11  960981    1% /sap
[root@linux-world ~]#

特定文件系统的 inode 信息:

[root@linux-world ~]# df -i /sap/
Filesystem           Inodes IUsed  IFree IUse% Mounted on
/dev/mapper/vg00-sap 960992    11 960981    1% /sap
[root@linux-world ~]#

例7:输出所有文件系统使用情况汇总

-total 选项在 df 命令中用于显示所有文件系统的磁盘使用情况汇总。

[root@linux-world ~]# df -h --total
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/vg00-root   17G  786M   15G   5% /
devtmpfs               754M     0  754M   0% /dev
tmpfs                  760M     0  760M   0% /dev/shm
tmpfs                  760M  8.4M  752M   2% /run
tmpfs                  760M     0  760M   0% /sys/fs/cgroup
/dev/mapper/vg00-home   15G   41M   14G   1% /home
/dev/sda1              477M   62M  387M  14% /boot
/dev/mapper/vg00-var   9.5G   48M  9.0G   1% /var
/dev/mapper/vg00-sap    15G   37M   14G   1% /sap
total                   58G  980M   54G   2% -
[root@linux-world ~]#

例8:只打印本地文件系统磁盘的使用情况

假设网络文件系统也挂载在 Linux 上,但我们只想显示本地文件系统的信息,这可以通过使用 df 命令的 -l 选项来实现。

只打印本地文件系统:

[root@linux-world ~]# df -Thl
Filesystem            Type      Size  Used Avail Use% Mounted on
/dev/mapper/vg00-root ext4       17G  791M   15G   6% /
devtmpfs              devtmpfs  754M     0  754M   0% /dev
tmpfs                 tmpfs     760M     0  760M   0% /dev/shm
tmpfs                 tmpfs     760M  8.4M  752M   2% /run
tmpfs                 tmpfs     760M     0  760M   0% /sys/fs/cgroup
/dev/mapper/vg00-home ext4       15G   41M   14G   1% /home
/dev/sda1             ext3      477M   62M  387M  14% /boot
/dev/mapper/vg00-var  ext3      9.5G  105M  8.9G   2% /var
/dev/mapper/vg00-sap  ext3       15G   37M   14G   1% /sap
[root@linux-world ~]#

例9:打印特定文件系统类型的磁盘使用情况

-t 选项在 df 命令中用来打印特定文件系统类型的信息,用 -t 指定文件系统的类型,如下所示:

对于 ext4 :

[root@linux-world ~]# df -t ext4
Filesystem            1K-blocks   Used Available Use% Mounted on
/dev/mapper/vg00-root  17003304 809492  15307028   6% /
/dev/mapper/vg00-home  14987616  41000  14162232   1% /home
[root@linux-world ~]#

对于 nfs4 :

[root@linux-world ~]# df -t nfs4
Filesystem            1K-blocks      Used Available Use% Mounted on
192.168.1.5:/opensuse 301545472 266833920  19371008  94% /data
[root@linux-world ~]#

例10:使用 -x 选项排除特定的文件系统类型

-x–exclude-type 在 df 命令中用来在输出中排出某些文件系统类型。

假设我们想打印除 ext3 外所有的文件系统。

[root@linux-world ~]# df -x ext3
Filesystem            1K-blocks      Used Available Use% Mounted on
/dev/mapper/vg00-root  17003304    809492  15307028   6% /
devtmpfs                 771876         0    771876   0% /dev
tmpfs                    777928         0    777928   0% /dev/shm
tmpfs                    777928      8540    769388   2% /run
tmpfs                    777928         0    777928   0% /sys/fs/cgroup
/dev/mapper/vg00-home  14987616     41000  14162232   1% /home
192.168.1.5:/opensuse 301545472 266834944  19369984  94% /data
[root@linux-world ~]#

例11:在 df 命令的输出中只打印特定的字段

-output={field_name1,field_name2...} 选项用于显示 df 命令某些字段的输出。

可用的字段名有: source, fstype, itotal, iused, iavail, ipcent, size, used, avail, pcenttarget

[root@linux-world ~]# df --output=fstype,size,iused
Type     1K-blocks  IUsed
ext4      17003304  22275
devtmpfs    771876    357
tmpfs       777928      1
tmpfs       777928    423
tmpfs       777928     13
ext4      14987616     15
ext3        487652    337
ext3       9948012   1373
ext3      14987656     11
nfs4     301545472 451099
[root@linux-world ~]#

via: http://www.linuxtechi.com/11-df-command-examples-in-linux/

作者:Pradeep Kumar 译者:strugglingyouth 校对:wxy

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