建站实用Linux命令


平时多用Mac电脑办公,自己搭建网站也用的Linux系统,所以时不时需要用到Linux的一些命令,最高频的如cd、ls、rm、mkdir、touch等等很好记,事实上由于使用频率过高不用刻意记忆,用多了自然就能记住,然而其他频率稍低但也比较常用和重要的命令老是记不住,总记不清其参数和值的格式,记不清时需要上网查,虽然也很快就能解决,但网上查到的资料要么太简略没有实例示范、要么详细讲解每个参数每种情况场景,这时需要去甄别,然而很多命令的使用场景和最高频用到的写法就一两种,每次去查去甄别也会挺麻烦。所以将平时用Mac和Linux最常用到的一些命令及最高频最典型的写法,以最简单的举例形式总结一下,下次记不清时直接照这里总结过的去敲即可,简单省事。

查看系统信息:

$ uname -a

查看详细系统信息:

$ cat /etc/os-release

进入当前目录的上一级目录:

$ cd ..

查找当前目录下的所有txt文件:

$ find ./ -name *.txt

查找当前目录下的所有heap文件夹:

$ find ./ -name heap

创建指向target名为linkName的软链接:

$ link -s target linkName

将当前目录下的所有文件打包为all.tar文件:

$ tar -cvf all.tar *

将当前目录下的folder文件夹打包成folder.tar文件:

$ tar -cvf folder.tar folder/

将folder文件夹压缩打包成backup.tar.gz文件:

$ tar -zcvf backup.tar.gz folder/

将folder文件夹压缩打包成backup.tar.bz2文件:

$ tar -jcvf backup.tar.bz2 folder/

解压backup.tar文件

$ tar -xf backup.tar

解压backup.tar.bz2文件:

$ tar -jxf backup.tar.bz2

解压backup.tar.gz文件:

$ tar -zxf backup.tar.gz

将test.zip文件解压到 /temp文件夹下:

$ unzip -d /temp test.zip

将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:

$ zip -q -r html.zip /home/html

将文件或文件夹移动a移动到文件夹b中:

$ mv a b

将文件old.txt重命名为new.docx:

$ mv old.txt new.docx

使用rename将文件HelloWorld.java中的Hello改成Hi:

$ rename Hello Hi HelloWorld.java

使用rename将文件HelloShell.sh重命名为test.c

$ rename HelloShell.sh test.c HelloShell.sh

批量将某个目录下所有文件的文件名中的Hi字符串改为Hello:

$ rename Hi Hello *

批量将当前目录下的所有文件的后缀名由.html改为.php:

$ rename .html .php *

要修改文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行:

$ chmod -R 777 /upload

网络相关命令

使用telnet测试某台计算机的某个端口是否开放,如果返回Escape character is '^]'.就说明是开放的:

$ telnet 127.0.0.1 443
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

查看本机某个端口是被被哪个程序所占:

$ lsof -i:9123
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
node    25164 root   19u  IPv4 363648678      0t0  TCP localhost:grcp (LISTEN)

或者:

$ netstat -tunpl | grep 9123
tcp        0      0 127.0.0.1:9123          0.0.0.0:*               LISTEN      25164/node

列出TCP协议连接的端口号和对应占用的应用:

$ netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2213/mysqld
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      1205/memcached
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      827/redis-server 12
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      23373/nginx: master

软件管理

查询某个命令的位置:

$ whereis nginx

进程管理

实时显示计算资源的使用情况和所有进程的状态、所占用的资源:

$ top

显示所有用户进程,包括没有控制终端的进程,并给出用户和启动细节等信息:

$ ps -aux

按长格式显示进程详细信息:

$ ps -ef

查看nginx的进程详情:

$ ps -ef | grep nginx

直接杀死进程,但不能保证一定能杀死:

$ kill pid

强制杀死进程:

$ kill -9 pid

查看某个进程的进程号

$ pidof node

按照进程名杀死进程:

$ pkill node

tee命令

从终端中输入文本 并保存在output1.txt和output2文件中:

$ tee output1.txt output2.txt

将命令的输出 展示到终端并保存到output.txt文件中:

$ ping google.com | tee output.txt

将命令的输出 展示到终端并追加到output.txt文件尾部:

$ ping google.com | tee -a output.txt

命令执行错误输出同时打印到屏幕和文件:

$ tnpm run ci 2>&1 | tee -a cilog01.log
[command] 2>&1 | tee -a cilog01.log

将命令的输出 展示到终端并保存到output1.txt、output2.txt、output3.txt三个文件中:

$ ping google.com | tee output1.txt output2.txt output3.txt

将tee命令的输出作为其他命令的输入:

$ ls file* | tee output.txt | wc -l

提高命令的权限:

$ :w !sudo tee %


一片冰心在玉壶