/ linux

linux

发行版本的选择:

  • 创业公司请选择 Ubuntu,开发人员上手快无需专业运维,lts 3年维护期,90% 的公司都等不到 lts 维护期结束就倒闭了。
  • 业务稳定的公司,请选择 CentOS,稳如泰山,值得信赖。

文档

Linux工具快速教程

常用命令

查看系统版本:

# centos
cat /etc/centos-release

查看内核版本:

uname -a
  • /dev/null 表示空设备文件
  • 0 表示stdin标准输入
  • 1 表示stdout标准输出
  • 2 表示stderr标准错误

2>&1,把标准错误重定向到标准输出。

chmod

将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

将文件 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt

将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

将 ex1.py 设定为只有该文件拥有者可以执行 :

chmod u+x ex1.py

将目前目录下的所有文件与子目录皆设为任何人可读取 :

chmod -R a+r *

ps

查看 php-fpm 进程:

ps -ef|grep php-fpm

zip

安装

# debian/ubuntu
sudo apt-get install zip unzip -y

# centos
sudo yum install zip unzip -y

压缩

使用 zip 命令配合参数 -e 制作加密压缩文件:

zip -e test.zip test.txt

回车后输入两次密码。

如果要压缩文件夹则追加参数 r

zip -er testDir.zip testDir

解压

wget https://ghost.org/zip/ghost-latest.zi
unzip ghost-latest.zip -d ghost

tar

打包
将 todos 目录打包成 todos.tar

tar cf todos.tar todos

打包并压缩

tar zcf todos.tar.gz todos

解压

tar zxf todos.tar.gz
tar zxf todos.tar.gz -C /tmp

选项

  • c --create
  • x --extract
  • z gzip
  • f 这个应该作为最后一个选项

如果要使用 bzip2 则将 z 替换为 j

nslookup

yum install -y bind-utils

sed 和 awk

替换 url

sed -i 's~http://www.test.org/name~http://www.test.org/archive/name~g' user.html

替换数据库名称,将 sql 文件中的数据库名 cms 替换为数据库名 site:

sed -i 's~cms~site~g' *.sql

sysstat

➜  ~ yum list sysstat
➜  ~ sudo yum install sysstat -y

开发机调整 10 分钟为 1 分钟,方便查看性能表现

➜  ~ more /etc/cron.d/sysstat 
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

*/10 * * * * root /usr/lib64/sa/sa1 1 1 改为 */1 * * * * root /usr/lib64/sa/sa1 1 1

➜  ~ cd /var/log/sa
➜  ls
sa24
➜  sar -q -f sa24
Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 	05/24/2018 	_x86_64_	(1 CPU)

05:00:01 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
05:03:02 PM         1       194      0.00      0.02      0.05         0
05:04:01 PM         1       194      0.00      0.02      0.05         0
Average:            1       194      0.00      0.02      0.05         0
  • runq-sz 等待执行的任务队列长度,越长阻塞越严重。
  • plist-sz 队列中的任务总数。
  • ldavg-1 1分钟内系统负载。
  • ldavg-15 5分钟内系统负载。
  • blocked 15分钟内系统负载。

查看 CPU

➜  sar -p -f sa24 
Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 	05/24/2018 	_x86_64_	(1 CPU)

05:00:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
05:03:02 PM     all      0.16      0.00      0.34      0.01      0.00     99.49
05:04:01 PM     all      0.09      0.00      0.22      0.00      0.00     99.69
05:05:01 PM     all      0.10      0.05      0.24      0.00      0.00     99.61
05:06:01 PM     all      0.14      0.00      0.17      0.00      0.00     99.69
05:07:01 PM     all      0.10      0.00      0.17      0.02      0.00     99.71
05:08:01 PM     all      0.12      0.00      0.17      0.00      0.00     99.71
05:09:01 PM     all      0.10      0.00      0.17      0.00      0.00     99.73
05:10:01 PM     all      0.15      0.00      0.24      0.00      0.00     99.61
Average:        all      0.13      0.01      0.24      0.01      0.00     99.62

查看内存

➜  sar -r -f sa24 
Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 	05/24/2018 	_x86_64_	(1 CPU)

05:00:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
05:03:02 PM    657064   1226420     65.11      2108    706212   1727224     49.97    647072    379804        16
05:04:01 PM    657064   1226420     65.11      2108    706220   1727224     49.97    647088    379800         0
05:05:01 PM    657028   1226456     65.12      2108    706224   1727224     49.97    647136    379756         0
05:06:01 PM    657040   1226444     65.12      2108    706224   1727224     49.97    647144    379768        16
05:07:01 PM    657008   1226476     65.12      2108    706236   1727224     49.97    647148    379756         0
05:08:01 PM    656876   1226608     65.12      2108    706240   1727224     49.97    647152    379756         0
05:09:01 PM    657032   1226452     65.12      2108    706244   1727224     49.97    647156    379756         0
05:10:01 PM    657032   1226452     65.12      2108    706248   1727224     49.97    647160    379756         4
05:11:01 PM    656876   1226608     65.12      2108    706256   1727224     49.97    647180    379744         4
05:12:01 PM    656876   1226608     65.12      2108    706256   1727224     49.97    647180    379744         0
05:13:01 PM    657008   1226476     65.12      2108    706264   1727224     49.97    647188    379744         0
05:14:01 PM    656876   1226608     65.12      2108    706264   1727224     49.97    647188    379744         4
Average:       656982   1226502     65.12      2108    706241   1727224     49.97    647149    379761         4
  • %memused 已经用掉的内存百分比。
  • %commit 为了保证程序正常运行仍需要的内存百分比。
  • 如果 %memused%commit 相加大于 100%,则内存需要频繁换页。

内存换页出入:

➜  sar -B -f sa24
Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 	05/24/2018 	_x86_64_	(1 CPU)

05:00:01 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
05:03:02 PM     14.69      3.72    169.60      0.02     69.24      0.00      0.00      0.00      0.00
05:04:01 PM      0.00      5.72     54.62      0.00     19.89      0.00      0.00      0.00      0.00
05:05:01 PM      0.00      2.05    231.50      0.00     86.73      0.00      0.00      0.00      0.00
05:06:01 PM      0.00      3.75     57.22      0.00     20.65      0.00      0.00      0.00      0.00
05:07:01 PM      0.00      1.24     53.79      0.00     19.52      0.00      0.00      0.00      0.00
05:08:01 PM      0.00      1.31     53.77      0.00     19.77      0.00      0.00      0.00      0.00
05:09:01 PM      0.00      0.83     53.89      0.00     19.68      0.00      0.00      0.00      0.00
05:10:01 PM      0.00      1.31    194.42      0.00     65.02      0.00      0.00      0.00      0.00
05:11:01 PM      0.00      2.02     92.42      0.00     32.10      0.00      0.00      0.00      0.00
05:12:01 PM      0.00      1.78     53.84      0.00     19.70      0.00      0.00      0.00      0.00
05:13:01 PM      0.00      1.22     53.81      0.00     19.74      0.00      0.00      0.00      0.00
05:14:01 PM      0.00      1.10    121.91      0.00     41.44      0.00      0.00      0.00      0.00
05:15:02 PM      0.00      1.78     94.23      0.00     32.44      0.00      0.00      0.00      0.00
05:16:01 PM      0.00      2.23     54.74      0.00     20.01      0.00      0.00      0.00      0.00
05:17:01 PM      0.00      1.32     53.88      0.00     19.70      0.00      0.00      0.00      0.00
05:18:01 PM      0.00      1.15     53.74      0.00     19.56      0.00      0.00      0.00      0.00
Average:         2.46      2.22     99.38      0.00     36.92      0.00      0.00      0.00      0.00
  • pgpgin/s 每秒从磁盘或 swap 置换到内存的字节数。
  • pgpgout/s 每秒从内存置换到磁盘或 swap 的字节数。
  • fault/s 每秒钟的缺页数

Swap 的交互频繁程度:

➜  sar -W -f sa24 
Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 	05/24/2018 	_x86_64_	(1 CPU)

05:00:01 PM  pswpin/s pswpout/s
05:03:02 PM      0.00      0.00
05:04:01 PM      0.00      0.00
05:05:01 PM      0.00      0.00
05:06:01 PM      0.00      0.00
05:07:01 PM      0.00      0.00
05:08:01 PM      0.00      0.00
05:09:01 PM      0.00      0.00
05:10:01 PM      0.00      0.00
05:11:01 PM      0.00      0.00
05:12:01 PM      0.00      0.00
05:13:01 PM      0.00      0.00
05:14:01 PM      0.00      0.00
05:15:02 PM      0.00      0.00
05:16:01 PM      0.00      0.00
05:17:01 PM      0.00      0.00
05:18:01 PM      0.00      0.00
05:19:01 PM      0.00      0.00
05:20:01 PM      0.00      0.00
05:21:01 PM      0.00      0.00
05:22:01 PM      0.00      0.00
05:23:01 PM      0.00      0.00
05:24:01 PM      0.00      0.00
Average:         0.00      0.00

查看 I/O 参数:

➜  sar -b -f sa24 
Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 	05/24/2018 	_x86_64_	(1 CPU)

05:00:01 PM       tps      rtps      wtps   bread/s   bwrtn/s
05:03:02 PM      0.82      0.34      0.49     29.38      7.45
05:04:01 PM      0.65      0.00      0.65      0.00     11.42
05:05:01 PM      0.36      0.00      0.36      0.00      4.10
05:06:01 PM      0.49      0.00      0.49      0.00      7.51
05:07:01 PM      0.29      0.00      0.29      0.00      2.48
05:08:01 PM      0.29      0.00      0.29      0.00      2.61
05:09:01 PM      0.22      0.00      0.22      0.00      1.65
05:10:01 PM      0.32      0.00      0.32      0.00      2.63
05:11:01 PM      0.37      0.00      0.37      0.00      4.03
05:12:01 PM      0.34      0.00      0.34      0.00      3.57
05:13:01 PM      0.27      0.00      0.27      0.00      2.46
05:14:01 PM      0.25      0.00      0.25      0.00      2.18
05:15:02 PM      0.29      0.00      0.29      0.00      3.58
05:16:01 PM      0.36      0.00      0.36      0.00      4.46
05:17:01 PM      0.31      0.00      0.31      0.00      2.63
05:18:01 PM      0.27      0.00      0.27      0.00      2.32
05:19:01 PM      0.22      0.00      0.22      0.00      1.66
05:20:01 PM      0.36      0.00      0.36      0.00      3.90
05:21:01 PM      0.27      0.00      0.27      0.00      2.87
05:22:01 PM      0.22      0.00      0.22      0.00      1.66
05:23:01 PM      0.25      0.00      0.25      0.00      2.32
05:24:01 PM      0.32      0.00      0.32      0.00      2.63
05:25:01 PM      0.24      0.00      0.24      0.00      1.87

Average:          tps      rtps      wtps   bread/s   bwrtn/s
Average:         0.38      0.04      0.34      3.54      3.87
  • tps每秒钟物理设备的 I/O 请求次数
  • rtps
  • wtps
  • bread/s 块,读
  • bwrtn/s 块,写

sudo

Allow user to run PHP-FPM without password using sudoers

让用户 Phing 重启 PHP-FPM 无需密码:

echo "Phing ALL=NOPASSWD: /usr/bin/systemctl restart php-fpm.service" | sudo tee -a /etc/sudoers.d/php-fpm > /dev/null

手动执行命令,验证是否不需要输入密码:

sudo systemctl restart php-fpm.service

如果需要编辑文件:/etc/sudoers,请使用命令:

sudo visudo

查看:

sudo -l

top

ps

查看是否安装了 MySQL 或 MariaDB:

ps aux | grep mysql

alias

添加

alias la='ls -a'

删除

unalias la

查看

alias

将 alias 固化

永久添加,添加到 .zshrc

alias la='ls -a'
alias gopi="ssh pi@192.168.1.110"
alias zshconfig="vi ~/.zshrc"

更新环境变量

source ~/.zshrc

高级应用

alias cls='clear'
alias ll='ls -l'
alias la='ls -a'
alias vi='vim'
alias grep="grep --color=auto"

alias -s py=vi
alias -s js=vi
alias -s gz='tar -xzvf'
alias -s tgz='tar -xzvf'
alias -s zip='unzip'
alias -s bz2='tar -xjvf'

scp 上传

从本地服务器复制到远程服务器

scp local_file remote_username@remote_ip:remote_folder
scp local_file remote_username@remote_ip:remote_file
scp local_file remote_ip:remote_folder
scp local_file remote_ip:remote_file

传输文件夹:

scp -r local_folder remote_username@remote_ip:remote_folder
scp -r local_folder remote_ip:remote_folder

ln -s 软链接

建立文件软链接:ln -s /path/to/源文件 /path/to/LINK_NAME

sudo ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/default.conf

建立目录软链接:ln -s /path/to/源目录/ /path/to/LINK_NAME

sudo ln -s /home/vagrant/example.com/ /var/www/example.com

帮助文档:ln --help