蚊章汇 - Bobbin Zachariah
type: channel
link: https://linuxcn.bwsl.wang/author/15/
description: Bobbin Zachariah
items: 4个可以发送完整电子邮件的命令行工具
items: 如何在 CentOS Linux 中配置 MariaDB 复制
items: 一大波你可能不知道的 Linux 网络工具
items: 如何在Linux下使用rsync
items: 使用Linux的lsblk命令列出块设备信息

4个可以发送完整电子邮件的命令行工具
type: item
date: 2015-05-25T19:04:00+08:00
description: 今天的文章里我们会讲到一些使用Linux命令行工具来发送带附件的电子邮件的方法。它有很多用处，比如在应用程序所在服务器上，使用电子邮件发送一个文件过来，或者你可以在脚本中使用这些命令来做一些自动化操作。在本文的例子中，我们会使用foo.tar.gz文件作为附件。有不同的命令行工具可以发送邮件，这里我分享几个多数用户会使用的工具，如mailx、mutt和swaks。我们即将呈现的这些工具都是非常有名的，并且存在于多数Linux发行版默认的软件仓库中，你可以使用如下命令安装：在 Debian / Ubuntu 系统apt-get install mutt apt-get install swaks apt-get install mailx apt-get install sharutils 在基于Red Hat的系统，如 CentOS 或者 Fedorayum install mutt yum install swaks yum install mailx yum install sharutils 1) 使用 mail / mailxmailx工具在多数Linux发行版中是默认的邮件程序，现在已经支持发送附件了。如果它不在你的系统中，你可以使用上边的命令安装。有一点需要注意，老版本的mailx可能不支持发送附件，运行如下命令查看是否支持。$ man mail 第一行看起来是这样的：mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] [-A account] [-S variable[=value]] to-addr . . . 如果你看到它支持-a的选项（-a 文件名，将文件作为附件添加到邮件）和-s选项（-s 主题，指定邮件的主题），那就是支持的。可以使用如下的几个例子发送邮件。a) 简单的邮件运行mail命令，然后mailx会等待你输入邮件内容。你可以按回车来换行。当输入完成后，按Ctrl + D，mailx会显示EOT表示结束。然后mailx会自动将邮件发送给收件人。$ mail user@example.com HI, Good Morning How are you EOT b) 发送有主题的邮件$ echo "Email text" | mail -s "Test Subject" user@example.com -s的用处是指定邮件的主题。c) 从文件中读取邮件内容并发送$ mail -s "message send from file" user@example.com < /path/to/file d) 将从管道获取到的echo命令输出作为邮件内容发送$ echo "This is message body" | mail -s "This is Subject" user@example.com e) 发送带附件的邮件$ echo “Body with attachment "| mail -a foo.tar.gz -s "attached file" user@example.com -a选项用于指定附件。2) muttMutt是类Unix系统上的一个文本界面邮件客户端。它有20多年的历史，在Linux历史中也是一个很重要的部分，它是最早支持进程打分和多线程处理的客户端程序之一。按照如下的例子来发送邮件。a) 带有主题，从文件中读取邮件的正文，并发送$ mutt -s "Testing from mutt" user@example.com < /tmp/message.txt b) 通过管道获取echo命令输出作为邮件内容发送$ echo "This is the body" | mutt -s "Testing mutt" user@example.com c) 发送带附件的邮件$ echo "This is the body" | mutt -s "Testing mutt" user@example.com -a /tmp/foo.tar.gz d) 发送带有多个附件的邮件$ echo "This is the body" | mutt -s "Testing" user@example.com -a foo.tar.gz –a bar.tar.gz 3) swaksSwaks（Swiss Army Knife，瑞士军刀）是SMTP服务上的瑞士军刀，它是一个功能强大、灵活、可编程、面向事务的SMTP测试工具，由John Jetmore开发和维护。你可以使用如下语法发送带附件的邮件：$ swaks -t "foo@bar.com" --head…

如何在 CentOS Linux 中配置 MariaDB 复制
type: item
date: 2015-05-22T21:00:00+08:00
description: 这是一个创建数据库重复版本的过程。复制过程不仅仅是复制一个数据库，同时也包括从主节点到一个从节点的更改同步。但这并不意味着从数据库就是和主数据库完全相同的副本，因为复制可以配置为只复制表结构、行或者列，这叫做局部复制。复制保证了特定的配置对象在不同的数据库之间保持一致。Mariadb 复制概念备份 ：复制可以用来进行数据库备份。例如，当你做了主->从复制。如果主节点数据丢失(比如硬盘损坏)，你可以从从节点中恢复你的数据库。扩展 ：你可以使用主->从复制作为扩展解决方案。例如，如果你有一些大的数据库以及SQL查询，使用复制你可以将这些查询分离到每个复制节点。写入操作的SQL应该只在主节点进行，而只读查询可以在从节点上进行。分发解决方案 ：你可以用复制来进行分发。例如，你可以将不同的销售数据分发到不同的数据库。故障解决方案 : 假如你建立有主节点->从节点1->从节点2->从节点3的复制结构。你可以为主节点写脚本监控，如果主节点出故障了，脚本可以快速的将从节点1切换为新的主节点，这样复制结构变成了主节点->从节点1->从节点2，你的应用可以继续工作而不会停机。复制的简单图解示范开始之前，你应该知道什么是二进制日志文件以及 Ibdata1。二进制日志文件中包括关于数据库，数据和结构的所有更改的记录，以及每条语句的执行了多长时间。二进制日志文件包括一系列日志文件和一个索引文件。这意味着主要的SQL语句，例如CREATE, ALTER, INSERT, UPDATE 和 DELETE 会放到这个日志文件中；而例如SELECT这样的语句就不会被记录，它们可以被记录到普通的query.log文件中。而 Ibdata1 简单的说据是一个包括所有表和所有数据库信息的文件。主服务器配置首先升级服务器sudo yum install update -y && sudo yum install upgrade -y 我们工作在centos7 服务器上sudo cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) 安装 MariaDBsudo yum install mariadb-server -y 启动 MariaDB 并启用随服务器启动sudo systemctl start mariadb.service sudo systemctl enable mariadb.service 输出如下:ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service' 检查 MariaDB 状态sudo service mariadb status 或者使用sudo systemctl is-active mariadb.service 输出如下:Redirecting to /bin/systemctl status mariadb.service mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled) 设置 MariaDB 密码mysql -u root mysql> use mysql; mysql> update user set password=PASSWORD("SOME_ROOT_PASSWORD") where User='root'; mysql> flush privileges; mysql> exit 这里 SOME\_ROOT\_PASSWORD 是你的 root 密码。 例如我用"q"作为密码，然后尝试登录：sudo mysql -u root -pSOME_ROOT_PASSWORD 输出如下:Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 5 Server version: 5.5.41-MariaDB MariaDB Server Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others. 输入 'help;' 或 '\h' 查看帮助信息。 输入 '\c' 清空当前输入语句。让我们创建包括一些数据的表的数据库创建数据库/模式sudo mysql -u root -pSOME_ROOT_PASSWORD mysql> create databas…

一大波你可能不知道的 Linux 网络工具
type: item
date: 2015-05-12T22:52:00+08:00
description: 如果要在你的系统上监控网络，那么使用命令行工具是非常实用的，并且对于 Linux 用户来说，有着许许多多现成的工具可以使用，如： nethogs, ntopng, nload, iftop, iptraf, bmon, slurm, tcptrack, cbm, netwatch, collectl, trafshow, cacti, etherape, ipband, jnettop, netspeed 以及 speedometer。鉴于世上有着许多的 Linux 专家和开发者，显然还存在其他的网络监控工具，但在这篇教程中，我不打算将它们所有包括在内。上面列出的工具都有着自己的独特之处，但归根结底，它们都做着监控网络流量的工作，只是通过各种不同的方法。例如 nethogs 可以被用来展示每个进程的带宽使用情况，以防你想知道究竟是哪个应用在消耗了你的整个网络资源； iftop 可以被用来展示每个套接字连接的带宽使用情况，而像 nload 这类的工具可以帮助你得到有关整个带宽的信息。1) nethogsnethogs 是一个免费的工具，当要查找哪个 PID (注：即 process identifier，进程 ID) 给你的网络流量带来了麻烦时，它是非常方便的。它按每个进程来分组带宽，而不是像大多数的工具那样按照每个协议或每个子网来划分流量。它功能丰富，同时支持 IPv4 和 IPv6，并且我认为，若你想在你的 Linux 主机上确定哪个程序正消耗着你的全部带宽，它是来做这件事的最佳的程序。一个 Linux 用户可以使用 nethogs 来显示每个进程的 TCP 下载和上传速率，可以使用命令 nethogs eth0 来监控一个指定的设备，上面的 eth0 是那个你想获取信息的设备的名称，你还可以得到有关正在传输的数据的传输速率信息。对我而言， nethogs 是非常容易使用的，或许是因为我非常喜欢它，以至于我总是在我的 Ubuntu 12.04 LTS 机器中使用它来监控我的网络带宽。例如要想使用混杂模式来嗅探，可以像下面展示的命令那样使用选项 -p：nethogs -p wlan0 假如你想更多地了解 nethogs 并深入探索它，那么请毫不犹豫地阅读我们做的关于这个网络带宽监控工具的整个教程。（LCTT 译注：关于 nethogs 的更多信息可以参考：</article-2808-1.html> ）2) nloadnload 是一个控制台应用，可以被用来实时地监控网络流量和带宽使用情况，它还通过提供两个简单易懂的图表来对流量进行可视化。这个绝妙的网络监控工具还可以在监控过程中切换被监控的设备，而这可以通过按左右箭头来完成。正如你在上面的截图中所看到的那样，由 nload 提供的图表是非常容易理解的。nload 提供了有用的信息，也展示了诸如被传输数据的总量和最小/最大网络速率等信息。而更酷的是你只需要直接运行 nload 这个工具就行，这个命令是非常的短小且易记的：nload 我很确信的是：我们关于如何使用 nload 的详细教程将帮助到新的 Linux 用户，甚至可以帮助那些正寻找关于 nload 信息的老手。（LCTT 译注：关于 nload 的更新信息可以参考：</article-5114-1.html> ）3) slurmslurm 是另一个 Linux 网络负载监控工具，它以一个不错的 ASCII 图来显示结果，它还支持许多按键用以交互，例如 c 用来切换到经典模式， s 切换到分图模式， r 用来重绘屏幕， L 用来启用 TX/RX 灯（注：TX，发送流量；RX，接收流量） ，m 用来在经典分图模式和大图模式之间进行切换， q 退出 slurm。在网络负载监控工具 slurm 中，还有许多其它的按键可用，你可以很容易地使用下面的命令在 man 手册中学习它们。man slurm slurm 在 Ubuntu 和 Debian 的官方软件仓库中可以找到，所以使用这些发行版本的用户可以像下面展示的那样，使用 apt-get 安装命令来轻松地下载它：sudo apt-get install slurm 我们已经在一个教程中对 slurm 的使用做了介绍，不要忘记和其它使用 Linux 的朋友分享这些知识。4) iftop当你想显示连接到网卡上的各个主机的带宽使用情况时，iftop 是一个非常有用的工具。根据 man 手册，iftop 在一个指定的接口或在它可以找到的第一个接口（假如没有任何特殊情况，它应该是一个对外的接口）上监听网络流量，并且展示出一个表格来显示当前的一对主机间的带宽使用情况。通过在虚拟终端中使用下面的命令，Ubuntu 和 Debian 用户可以在他们的机器中轻易地安装 iftop：sudo apt…

如何在Linux下使用rsync
type: item
date: 2014-12-23T05:05:28+08:00
description: 对于各种组织和公司，数据对他们是最重要的，即使对于电子商务，数据也是同样重要的。Rsync是一款通过网络备份重要数据的工具/软件。它同样是一个在类Unix和Window系统上通过网络在系统间同步文件夹和文件的网络协议。Rsync可以复制或者显示目录并复制文件。Rsync默认监听TCP 873端口，通过远程shell如rsh和ssh复制文件。Rsync必须在远程和本地系统上都安装。rsync的主要好处是：速度：最初会在本地和远程之间拷贝所有内容。下次，只会传输发生改变的块或者字节。安全：传输可以通过ssh协议加密数据。低带宽：rsync可以在两端压缩和解压数据块。语法:#rsysnc [options] source path destination path 示例： 1 - 启用压缩[root@localhost /]# rsync -zvr /home/aloft/ /backuphomedir building file list ... done .bash_logout .bash_profile .bashrc sent 472 bytes received 86 bytes 1116.00 bytes/sec total size is 324 speedup is 0.58 上面的rsync命令使用了-z来启用压缩，-v是可视化，-r是递归。上面在本地的/home/aloft/和/backuphomedir之间同步。示例： 2 - 保留文件和文件夹的属性[root@localhost /]# rsync -azvr /home/aloft/ /backuphomedir building file list ... done ./ .bash_logout .bash_profile .bashrc sent 514 bytes received 92 bytes 1212.00 bytes/sec total size is 324 speedup is 0.53 上面我们使用了-a选项，它保留了所有人和所属组、时间戳、软链接、权限，并以递归模式运行。示例： 3 - 同步本地到远程主机root@localhost /]# rsync -avz /home/aloft/ azmath@192.168.1.4:192.168.1.4:/share/rsysnctest/ Password: building file list ... done ./ .bash_logout .bash_profile .bashrc sent 514 bytes received 92 bytes 1212.00 bytes/sec total size is 324 speedup is 0.53 上面的命令允许你在本地和远程机器之间同步。你可以看到，在同步文件到另一个系统时提示你输入密码。在做远程同步时，你需要指定远程系统的用户名和IP或者主机名。示例： 4 - 远程同步到本地[root@localhost /]# rsync -avz azmath@192.168.1.4:192.168.1.4:/share/rsysnctest/ /home/aloft/ Password: building file list ... done ./ .bash_logout .bash_profile .bashrc sent 514 bytes received 92 bytes 1212.00 bytes/sec total size is 324 speedup is 0.53 上面的命令同步远程文件到本地。示例： 5 - 找出文件间的不同[root@localhost backuphomedir]# rsync -avzi /backuphomedir /home/aloft/ building file list ... done cd+++++++ backuphomedir/ >f+++++++ backuphomedir/.bash_logout >f+++++++ backuphomedir/.bash_profile >f+++++++ backuphomedir/.bashrc >f+++++++ backuphomedir/abc >f+++++++ backuphomedir/xyz sent 650 bytes received 136 bytes 1572.00 bytes/sec total size is 324 speedup is 0.41 上面的命令帮助你找出源地址和目标地址之间文件或者目录的不同。示例: 6 - 备份rsync命令可以用来备份linux。你可以在cron中使用rsync安排备…

使用Linux的lsblk命令列出块设备信息
type: item
date: 2014-07-08T16:00:00+08:00
description: lsblk（列出块设备）命令用于列出所有可用块设备的信息，但是，它不会列出RAM盘的信息。块设备有硬盘，闪存盘，CD-ROM等等。如何安装lsblklsblk命令包含在util-linux-ng包中，现在该包改名为util-linux。这个包带了几个其它工具，如dmesg。要安装lsblk，请在此处下载util-linux包。Fedora中安装lsblkFedora用户可以通过以下方法来安装该包：$ sudo yum install util-linux-ng 该命令有几个选项：默认选项lsblk命令默认情况下将以树状列出所有块设备。打开终端，并输入以下命令：$ lsblk 输出如下：7个栏目名称如下：NAME : 这是块设备名。MAJ:MIN : 本栏显示主要和次要设备号。RM : 本栏显示设备是否可移动设备。注意，在本例中设备sdb和sr0的RM值等于1，这说明他们是可移动设备。SIZE : 本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB，而1K表明该设备大小为1KB。RO : 该项表明设备是否为只读。在本案例中，所有设备的RO值为0，表明他们不是只读的。TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中，sda和sdb是磁盘，而sr0是只读存储（rom）。（LCTT译注，此处sr0的RO项没有标记为1，可能存在一些错误？）MOUNTPOINT : 本栏指出设备挂载的挂载点。列出所有设备默认选项不会列出所有空设备。要查看这些空设备，请使用以下命令：$ lsblk -a 该选项将列出所有设备，包括空设备在内。列出设备权限和属主lsblk命令也可以用于列出一个特定设备的拥有关系，同时也可以列出组和模式。可以通过以下命令来获取这些信息：$ lsblk -m 列出指定设备该命令也可以只获取指定设备的信息。这可以通过在提供给lsblk命令的选项后指定设备名来实现。例如，你可能对了解以字节显示你的磁盘驱动器大小比较感兴趣，那么你可以通过运行以下命令来实现：$ lsblk -b /dev/sda 或者，以下命令等同：$ lsblk --bytes /dev/sda 以列表形式列出不带头的设备你也可以组合几个选项来获取指定的输出。例如，你也许想要以列表格式列出设备，而不是默认的树状格式。你可能也对移除不同栏目名称的标题感兴趣。可以将两个不同的选项组合，以获得期望的输出，命令如下：$ lsblk -nl 或者，你可以使用下面的长选项，它们也能给出相同的输出。$ lsblk --noheadings --list 列出SCSI设备要获取SCSI设备的列表，你只能使用-S选项。该选项是大写字母S，不能和-s选项混淆，该选项是用来以颠倒的顺序打印依赖的。$ lsblk -S lsblk列出SCSI设备，而-s是逆序选项（LCTT译注：将设备和分区的组织关系逆转过来显示），其将给出如下输出。输入命令：$ lsblk -s 或者$ lsblk --inverse 你可以使用lsblk来获取关于你的块设备的更多信息，自己把它试着显示出来吧！via: http://linoxide.com/linux-command/linux-lsblk-command/译者：GOLinux 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出