Idle Works, Idle Thoughts

Linux学习笔记

新添加一个路径到PATH中:

PATH=~/tools/bin:$PATH
export PATH

标准输出和错误输出重定向到/dev/null

$ script.sh > /dev/null 2>&1

rename批量修改文件名,例如把jolteon riceball.png?dl=0修改为jolteon riceball.png

$ rename 's/\?dl=0//' *.png*    

sudo

执行 sudo 时提示找不到程序,可以将新的路径加入 /etc/suders 文件:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/NEWPATH/bin"

crontab - 定时任务

crontab的常见参数:

crontab的格式:

*/1 * * * * script.sh

其中前面5个字段表示时间:分钟、小时、日期、月份、星期,例如:

每5分钟执行:

*/5 * * * *

每6个小时执行:

0 */6 * * *

du 查看文件所占磁盘空间

Linux 查找最大的10个文件/目录:

$ du -ha | sort -hr | head

Linux 查看当前路径下所有文件的占用大小:

$ du -h --max-depth 1 | sort -h

OS X 查看当前路径下所有文件的占用大小(du 限制深度参数为 -d,且 sort 没有 -h 选项):

$ du -d1 | sort -nk1    

tr 字符转换

tr可以把目标字符转为另一个字符,如把’/’转为换行:

$ echo "idleworks.io/notes/linux.html" | tr '/' '\n'

shuf 生成随机序列

随机生成70个长为6位数的数字:

$ shuf -i 100000-999999 -n 70

-i - 指定一个数字区间。

-n - 指定生成的个数。

从一个文件中随机抽取10行:

$ shuf -n10 /tmp/t.txt

grep

grep用来在文本中搜索目标字符串。

-l(小写L) - 只输出文件名 - 如果文本有包含目标字符串,则输出文件名。

–color - 用颜色高亮匹配的字符串。

-n - 输出行号。

-c - 输出上下num行(大写的C,表示context,上下文)。

watch

watch可以观察其他程序的输出,并动态输出到屏幕。如:

$ watch ls

观察ls的输出。watch默认2秒更新一次输出,用-n控制间隔时间,如每隔5秒输出更新程序输出:

$ watch -n 5 ls

-d高亮两次输出的差异:

$ watch -d -n 5 ls

convert - 图片转换工具

首先需要安装图形处理软件 ImageMagic:

$ sudo yum install ImageMagick

安装完毕后,可以在命令行下使用convert批量处理图片。

转换文件格式:

$ convert file.jpg file.png

修改图片大小:

$ convert file.jpg -resize 640x480 file.jpg

批量处理图片:

$ for file in *.png; do convert $file -resize 640x480 $file; done

因修改图片大小时,convert会遵循原始图片的长宽比例缩放,可以强制修改为指定大小:

$ convert file.jpg -resize 640x480! file.jpg

修改为指定宽度:

$ convert file.jpg -resize 640 file.jpg

修改为指定高度:

$ convert file.jpg -resize x480 file.jpg

旋转90度:

$ convert file.jpg -rotate 90 file.jpg

网络

netstat

查看所有 TCP 监听端口:

$ netstat -plnt

curl

--trace-ascii - 可以dump出Post的内容。

命令行查询天气预报:

$ curl wttr.in/Beijing

wget

-i - 从文件中获取URL并下载。如果你有个文件,每一行都是一个URL,你要下载所有的URL页面,就用-i

dig

dig是一个DNS查询工具。

一、查询域名对应的IP:

$ dig +short facebook.com
173.252.110.27

二、通过IP查询域名:

$ dig +short -x 173.252.110.27
edge-star-shv-13-frc1.facebook.com.

三、查询权威记录:

$ dig +short CNAME mail.google.com  
googlemail.l.google.com.

这条记录读作:mail.google.com.是权威记录googlemail.l.google.com.的一个别名。

四、查询MX记录:

$ dig +short mx google.com
30 alt2.aspmx.l.google.com.
40 alt3.aspmx.l.google.com.
50 alt4.aspmx.l.google.com.
20 alt1.aspmx.l.google.com.
10 aspmx.l.google.com.

在MX记录中有优先级设置。前面的数字表示优先级。数字越低优先级越高。

mtr

mtr是一个网络丢包统计工具。

其最长见的用法是查看到一台网络主机的丢包率:

$ sudo mtr -r -n 106.186.116.135
Start: Fri Aug  7 09:47:22 2015
HOST: centos7                     Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.1.1                0.0%    10    3.6   3.2   1.9   4.5   0.7
  2.|-- 115.183.160.1              0.0%    10    6.2   4.4   3.3   6.2   0.7
  3.|-- 124.205.97.52              0.0%    10    6.1   4.8   2.4   6.7   1.1
  4.|-- 218.241.165.205            0.0%    10    3.9   4.5   2.9   6.5   1.1
  5.|-- 124.205.98.105             0.0%    10   16.1   6.7   3.8  16.1   3.4
  6.|-- 202.99.1.77                0.0%    10    5.3   7.6   3.8  24.7   6.2
  7.|-- 172.16.100.94              0.0%    10    7.1  10.1   4.4  27.1   6.8
  8.|-- 219.142.8.241             90.0%    10   12.2  12.2  12.2  12.2   0.0
  9.|-- 202.97.57.237              0.0%    10   11.8   8.5   5.9  11.8   1.7
 10.|-- 202.97.34.190              0.0%    10   37.7  37.7  36.6  38.5   0.3
 11.|-- 202.97.33.114             50.0%    10   33.5  42.0  32.7  55.0   9.9
 12.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
 13.|-- 202.97.61.77               0.0%    10   38.2  37.1  35.3  41.8   1.8
 14.|-- 203.181.102.41            10.0%    10   72.9  73.7  71.7  75.7   1.1
 15.|-- 106.187.6.185              0.0%    10   74.0  73.3  71.2  76.0   1.6
 16.|-- 124.215.194.181            0.0%    10   73.7  72.9  69.2  78.1   3.3
 17.|-- 124.215.199.126            0.0%    10   71.3  70.8  69.0  72.7   1.1
 18.|-- 106.186.116.135            0.0%    10   72.2  73.9  72.2  76.3   1.3

当在与Linode联系的过程中,如果有服务器访问问题,他们通常会让你提供一份mtr的报告。mtr可以告诉你,到底是哪个网络节点有丢包。如果C到S有问题,应该同时测试C到S,以及从S到C的mtr报告,以便定位问题。

iptables

iptables是Linux下的防火墙工具。

iptables命令行参数

-A, 在一个规则链后附加一条规则。

-p, 对指定协议生效,如-p tcp

常用iptables配置

丢弃指定ip来的所有数据:

$ sudo iptables -A INPUT -s <ip-addr> -j DROP

开启一个端口

$ sudo iptables -I INPUT -p tcp -m tcp --dport <port> -j ACCEPT

保存当前的iptables配置:

$ sudo service iptables save

查看iptables统计:

$ sudo iptables -nvL INPUT

关闭iptables:

$ sudo service iptables stop

CentOS7上保存iptables规则:

$ sudo iptables -A IN_public_allow -p tcp -m tcp --dport <port> -j ACCEPT