这里记录一些经常用到的Linux指令,其实这是矛盾的,既然是经常用到,那自然是能很熟练的使用,不用借着文字的描述来辅助操作。然而记忆始终是可能失踪的,于是这墨写的字迹总能在无处可寻时给予一些实体的帮助。
首先是参考的一些网址
http://man.linuxde.net/
http://www.runoob.com/linux/linux-command-manual.html
Linux指令的分类,这里被推荐分为了,文件管理,文档编辑,文件传输,磁盘管理,磁盘维护,网络通讯,系统管理,系统设置,备份压缩,设备管理。
1: ps, show the status of current process
2: grep, global search regular expression and print out the line
3: vim
4: | , pipe
5: cat
6: copy & paste
7: > & >>, redirect
8: nohup & '\&', run at the front or back
9: ls
10: chmod
11: find
12: locate
13: tail
14: stat
15: whereis, find bin file
16: which, find the path of directive
17: history
18: split
19: mkdir
20: tar
21: ln, soft link
22: ar & ranlib
23: source
24: netstat
25: wget
26: curl
27: who
28: top
29: user, group
30: login log
31: crontab
32: kill
33: xargs
34: du, df
35: mysql
36: mount
37: telnet
38: ab
39: rsync
40: wc
others: mutil directives
1: ps, show the status of current process
ps, process status
-aux 显示所有包含其他使用者的行程
-ef 类似-aux
2: grep, global search regular expression and print out the line
-v 输出补集
-E 使用正则表达式 grep -E '[0-9]+' = egrep '[0-9]+'
-o 只输出文件匹配到的部分
-c 统计匹配字符串的行数
-i 忽略匹配样式中的字符大小写
-r 在多级目录中对文本进行递归搜索, 等价于-R
3:
3.1.删除字符
要删除一个字符,只需要将光标移到该字符上按下"x"。
3.2.删除一行
删除一整行内容使用"dd"命令。删除后下面的行会移上来填补空缺。
3.3.删除换行符
在Vim中你可以把两行合并为一行,也就是说两行之间的换行符被删除了:命令是"J"。
3.4.撤销
如果你误删了过多的内容。显然你可以再输入一遍,但是命令"u"更简便,它可以撤消上一次的操作。
3.5.重做
如果你撤消了多次,你还可以用CTRL-R(重做)来反转撤消的动作。换句话说,它是对撤消的撤消。撤消命令还有另一种形式,"U"命令,它一次撤消对一行的全部操作。第二次使用该命令则会撤消前一个"U"的操作。用"u"和CTRL-R你可以找回任何一个操作状态。
3.6.追加
"i"命令可以在当前光标之前插入文本。
"a"命令可以在当前光标之后插入文本。
"o"命令可以在当前行的下面另起一行,并使当前模式转为Insert模式。
"O"命令(注意是大写的字母O)将在当前行的上面另起一行。
3.7.使用命令计数
假设你要向上移动9行。这可以用"kkkkkkkkk"或"9k"来完成。事实上,很多命令都可以接受一个数字作为重复执行同一命令的次数。比如刚才的例子,要在行尾追加三个感叹号,当时用的命令是"a!!!"。另一个办法是用"3a!"命令。3说明该命令将被重复执行3次。同样,删除3个字符可以用"3x"。指定的数字要紧挨在它所要修饰的命令前面。
3.8.复制粘贴
复制:y;粘贴:p;选择:v
复制一行:yy,这样复制的,p的话会自动粘贴到下一行。
3.9
跳到文本最后一行按”G”或者shift+ g。
跳到文本第一行按gg或者2g。
3.10放弃所做的操作,q!
3.11查询,在命令行模式下输入/要查询的内容,回车,然后按n可以依次查看。
3.12跳转到指定行:命令行模式行号n:ngg。或者命令行输入:n,注意冒号要写。
3.13
v字符选择,将光标经过的字符选择
V行选择,将光标经过的行选择
3.14
设置行号: 进入vim,:setnumber (有冒号)
取消行号设置::setnonumber
3.15
全局替换 %s/aaa/bbb ,%全局,s替换
3.16 修改vim显示效果
第一步:进终端,输入指令: #vim ~/.vimrc
第二步:这时我们进入到vimrc文件,可能大家会以为自己步骤错了,但是别担心,那vimrc文件就是一个空文件,别管那么多,随便找个空行,敲入 set number.
第三部:保存退出,这是再试一下打开vim编辑器,这是就会法发现已经自动显示行号了,如果想取消的话当然也很简单,不用改什么环境变量,直接再一次 vim ~/.vimrc,把里面的set number给删除掉就搞定了。
3.7 编辑两个文件
vim file1 file2
use :n jump to file2 from file1
use :N jump to file1 from file2
3.18 比较文件
vim -d file1 file2 比较两个文件
4: | , pipe
“|”: 管道符,管道符 ”|” 将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
5: cat
cat命令用于文本输出。主要用三大功能
1.一次显示整个文件。
$ cat filename
2.从键盘创建一个文件。
$ cat > filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件。
$cat file1 file2 > file
-n 或–number 由 1开始对所有输出的行数编号
-b 或–number-nonblank 和-n 相似,只不过对于空白行不编号
-s 或–squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
example
cat ns file
cat file1 file2 | grep "log" > new.txt
6: copy & paste
复制命令:ctrl + insert 或者鼠标左键选中就是复制
粘贴命令:shilt + insert 或者鼠标右键选中就是粘贴
设置xshell 中选中即复制
xshell -> 工具 -> 选项 -> 鼠标和键盘 -> 将选定的文件复制到剪切板
7: > && >>, redirect
7.1 >
是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节);
所以清空文件
echo> new.txt
>new.txt
7.2 >>
这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。
8: nohup & '\&', run at the front or back
refer: http://www.cnblogs.com/lwm-1988/archive/2011/08/20/2147299.html
我们一般的nginx运行程序都是在前台运行,有交互式的。
可以通过./a.out & 将前台程序移到后台去运行
或者Ctrl + Z 挂起这个程序
然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)
#bg 1
[1]+ /root/bin/rsync.sh &
用 jobs 命令查看正在运行的任务:
#jobs
[1]+ Running /root/bin/rsync.sh &
如果想把它调回到前台运行,可以用
#fg 1
/root/bin/rsync.sh
这样,你在控制台上就只能等待这个任务完成了。
但是如上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。如果我们要在退出shell的时候继续运行进程,则需要使用nohup忽略hangup信号
$ nohup ./test.sh &
无论是否将nohup 命令的输出重定向到终端,输出都将附加到当前目录的nohup.out 文件中。
如果当前目录的nohup.out 文件不可写,输出重定向到$HOME/nohup.out 文件中。
如果没有文件能创建或打开以用于追加,那么Command 参数指定的命令不可调用。
9: ls
-l:能展示出是文件还是目录,它的大小、修改日期和时间、文件或目录的名字以及文件的属主和它的权限。ls -l = ll
-a:列出所有文件包括以‘.’开头的隐藏文件。
ll-a /opt/*.desktop 查看这个目录以.desktop结尾的文件
10: chmod
变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下:
u:User,即文件或目录的拥有者。
g:Group,即文件或目录的所属群组。
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
有关权限代号的部分,列表于下:
r:读取权限,数字代号为"4"。
w:写入权限,数字代号为"2"。
x:执行或切换权限,数字代号为"1"。
-:不具任何权限,数字代号为"0"。
实例:
chmod ug+w,o-w file1.txt file2.txt
11: find
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
命令参考:find. -name *.pyc | xargs sudo rm -rf
有个更方便的做法,find. -name "*.pyc" -delete
说一下上面这个命令,查找当前目录下所有.pyc文件,并将其删除,而且由于这里的.pyc文件有写保护,所以需要-rf 并且是在sudo(root)权限下执行删除,注意sudo的位置。
find– name *.pyc默认情况下是在当前目录查找,如果当前目录有,则结束查找,如果当前目录没有,则会递归全部的子目录。
find-name "*.py" ,多了这个双引号,会递归全部的子目录。所以最好是写双引号
命令参考,find. -maxdepth 1 ! -name ".py"
当前目录下第一层(maxdepth最大搜索深度为1),的全部非.py文件和目录
命令参考,
find .-atime -2,最近两天内访问过的文件(注意负号)
find .-atime +2,不是在最近两天访问过的文件
find .-atime 2,恰好在2天前被访问过的文件
find .-iname *docker*: 忽略大小写
find和grep,比如我要找当前目录的一个文件
find .-maxdepth 1 -name "*.py" = ls | grep .py
12: locate
locate命令其实是find-name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
Locate redis.conf
locate my.cnf (一个机器上可能会有多个my.cnf,要去看实际用的是哪一个)
locate ~/fit (搜索用户主目录下的fit开头的文件)
13: tail
tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
tail -f logs/access.log
tail -n 20 logs/access.log 显示最后20行
14: stat
stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。
15: whereis
whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。
16: which
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
17: history
当前用户的操作记录记录在home(~)下的.bash_history里,只记录1000条,在关闭当前shell之前,所有操作都记录在内存中,关闭后写入,._bash_history里
n :数字,意思是要列出最近的 n 条命令行表的意思!
-c :将目前的 shell 中的所有 history 内容全部消除
-a :将目前新增的 history 命令新增入 histfiles 中,若没有加 histfiles ,
则默认写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;
-w :将目前的 history 记忆内容写入 histfiles 中!(这一部分也随即在内存中被清空)
18: split
-b:值为每一输出档案的大小,单位为 byte。
-a:指定分割出的文件名前缀
-d:使用数字作为后缀。
-l:值为每一输出档的列数大小。
split -l 1000000 news.access.log -d -a 3 news.access
将文件每1000000行分割一次,命名为news.access000,news.access001
19: mkdir
-p:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
-m:建立目录的同时设置目录的权限;
mkdir-p -m 755 /var/www/config
20: tar
tar-cvf exam.tar django ,建立一个归档文件
tar-xvf exam.tar ,从一个归档文件中提取文件到当前目录
tar-zcvf examples.tgz examples,-z:通过gzip方式
请注意:你的tgz如果被修改了名字,但是这种方式打包出来的目录名仍然和之前相关联
例: django-1.7.11.tar.gz
修改文件名:django-1.7.tar.gz
执行命令tar-zxvf django-1.7.tar.gz
提取的文件的目录是django-1.7.11
21:ln, soft link
ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项
源文件:指定连接的源文件。如果使用-s选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件;
目标文件:指定源文件的目标连接文件。
将目录/usr/mengqc/mub1下的文件m2.c链接到目录/usr/liu下的文件a2.c
cd /usr/mengqc
ln /mub1/m2.c /usr/liu/a2.c
在执行ln命令之前,目录/usr/liu中不存在a2.c文件。执行ln之后,在/usr/liu目录中才有a2.c这一项,表明m2.c和a2.c链接起来(注意,二者在物理上是同一文件)
ln -sf /data/zhuayuanbing/openresty/nginx/sbin/nginx /data/zhuyuanbing/bin/openresty
删除软链
ln -sf /data/777/ /data/me/ddd
rm -rf /data/me/ddd/777
表示rm -rf /data/me/ddd/777/, 这个错误的删除方式,会将源文件也同步删除
22: ar & ranlib
refers:
https://blog.csdn.net/zougangx/article/details/3073604
http://www.runoob.com/linux/linux-comm-ar.html
https://blog.csdn.net/mafuli007/article/details/7568176
建立或修改备存文件,或是从备存文件中抽取文件。
ar可让您集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限
-r 将文件插入备存文件中。
-t 显示备存文件中所包含的文件。
-x 自备存文件中取出成员文件。
-d 删除备存文件中的成员文件。
例如我们可以用ar rv libtest.a hello.o hello1.o来生成一个库(一般为静态库),库名字是test,链接时可以用-ltest链接。该库中存放了两个模块hello.o和hello1.o。选项前可以有‘-'字符,也可以没有。
静态库文件需要使用“ar”来创建和维护。当给静态库增建一个成员时(加入一 个.o文件到静态库中),“ar”可直接将需要增加的.o文件简单的追加到静态库的末尾。之后当我们使用这个库进行连接生成可执行文件时,链接程序 “ld”却提示错误,这可能是:主程序使用了之前加入到库中的.o文件中定义的一个函数或者全局变量,但连接程序无法找到这个函数或者变量。
这 个问题的原因是:之前我们将编译完成的.o文件直接加入到了库的末尾,却并没有更新库的有效符号表。连接程序进行连接时,在静态库的符号索引表中无法定位 刚才加入的.o文件中定义的函数或者变量。这就需要在完成库成员追加以后让加入的所有.o文件中定义的函数(变量)有效,完成这个工作需要使用另外一个工 具“ranlib”来对静态库的符号索引表进行更新。
我们所使用到的静态库(文档文件)中,存在这样一个特殊的成员,它的名字是 “__.SYMDEF”。它包含了静态库中所有成员所定义的有效符号(函数名、变量名)。因此,当为库增加了一个成员时,相应的就需要更新成员 “__.SYMDEF”,否则所增加的成员中定义的所有的符号将无法被连接程序定位。完成更新的命令是:
ranlib ARCHIVEFILE
如果 我们使用GNU ar工具来维护、管理静态库,我们就不需要考虑这一步。GNU ar本身已经提供了在更新库的同时更新符号索引表的功能(这是默认行为,也可以通过命令行选项控制ar的具体行为。可参考 GNU ar工具的man手册)。
23: source
通常用法:sourcefilepath 或 .filepath
功能:使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。例如,当我们修改了/etc/profile文件,并想让它立刻生效,而不用重新登录,就可以使用source命令,如source/etc/profile。
24:netstat
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。
Windows: netstat -nao | findstr 9977 (9977是开的端口)
linux: netstat-antp | grep 9977
25: wget
wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
wget -t 3 -T 10 -N -q "http://192.168.0.1:8080/webcache/"$cache_file -O abc
-t设定最大尝试连接次数(0表示无限制)
-T设定响应超时的秒数
-q不显示执行过程
-N不要重新下载文件除非比本地文件新
-O重命名
26: curl
-A (or --user-agent): 设置 "User-Agent" 字段.
-b (or --cookie): 设置 "Cookie" 字段.
-e (or --referer): 设置 "Referer" 字段.
-H (header): 设置header.
-d post请求
curl “127.0.0.1” -d “user=percy&phone=131988559472”
curl "10.10.80.193/000001/" -H "host:doctor.10jqka.com.cn" -H "Accept-Encoding: gzip, deflate"
curl -H "Content-Type:application/json" -X POST -data '{"message": "sunshine"}'
27: who
在linux系统中,我们可以使用who命令查看登录者信息。
who命令能够打印当前都有谁登录到系统中 的相关信息。who命令只会显示真正登录到系统中的用户。它不会显示那些通过su命令切换用户的登录者。
-q选项完成计数功能。
默认情况下,who命令不会打印空闲时间和PID信息。如果打算显示这些信息,使用-u选项。不要忘记使用-H选项让显示的信息更加简单易读。空闲时间包含了最近最后一次活动以来消逝的时间.所以,00:13意思是 用户leni已经13分钟没执行过命令了.(.)符号 是指该终端过去的一分钟有过活动。在那期间,我们称之为“current” 。PID是用户shell程序的进程ID号。
用户连接方式。Tty意味着用户直接连接到电脑上,而pts意味着远程登录。
28: top
refer: https://www.cnblogs.com/dragonsuc/p/5512797.html
1:展开CPU
M:根据驻留内存大小进行排序;
P:根据CPU使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
29: user, group
refers:
https://www.cnblogs.com/jackyyou/p/5498083.html
https://www.linuxidc.com/Linux/2017-06/144916.htm
https://www.linuxidc.com/Linux/2017-01/139361.htm
whoami
groups
几个命令只有root账号才可以使用
useradd testuser 创建用户testuser
passwd testuser 给已创建的用户testuser设置密码
说明:新创建的用户会在/home下创建一个用户目录testuser
usermod --help 修改用户这个命令的相关参数
userdel testuser 删除用户testuser
rm -rf testuser 删除用户testuser所在目录
创建新用户后,同时会在etc目录下的passwd文件中添加这个新用户的相关信息
给用户添加sudo权限
切换到root用户下,cd root,运行visudo命令,visudo命令是用来编辑修改/etc/sudoers配置文件
查看user 属于哪个group
id user
group user
查看有哪些user
cat /etc/passwd
查看有哪些group
cat /etc/group
将一个已有用户 cnzhx 增加到一个已有用户组 apache 中,使此用户组成为该用户的附加用户组,可以使用带 -a 参数的 usermod 指令。-a 代表 append, 也就是将用户添加到新用户组中而不必离开原有的其他用户组。不过需要与 -G 选项配合使用:
usermod -a -G apache cnzhx
如果要同时将 cnzhx 的主要用户组改为 apache,则直接使用 -g 选项:
usermod -g apache cnzhx
30: login log
refer:
https://www.cnblogs.com/lizhaoxian/p/5981029.html
1 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;
2 /var/log/wtmp:记录当前正在登录和历史登录系统的用户信息,默认由last命令查看;
3 /var/log/btmp:记录失败的登录尝试信息,默认由lastb命令查看。
lastlog
列出所有用户最近登录的信息,或者指定用户的最近登录信息。lastlog引用的是/var/log/lastlog文件中的信息,包括login-name、port、last login time
last
列出当前和曾经登入系统的用户信息,它默认读取的是/var/log/wtmp文件的信息
lastb
列出失败尝试的登录信息,和last命令功能完全相同,只不过它默认读取的是/var/log/btmp文件的信息。当然也可以通过last -f参数指定读取文件,可以是/var/log/btmp、/var/run/utmp
ac
输出所有用户总的连接时间,默认单位是小时。由于ac是基于wtmp统计的,所以修改或者删除wtmp文件都会使ac的结果受影响。
w
查看当前登入系统的用户信息及用户当前的进程(而who命令只能看用户不能看进程)。该命令能查看的信息包括字系统当前时间,系统运行时间,登陆系统用户总数及系统1、5、10分钟内的平均负载信息。后面的信息是用户,终端,登录源,login time,idle time,JCPU,PCPU,当前执行的进程等。
w的信息来自两个文件:用户登录信息来自/var/run/utmp,进程信息来自/proc/.
user,who
显示当前正在登入统的用户名。
utmpdump
utmpdump用于转储二进制日志文件到文本格式的文件以便查看,同时也可以修改二进制文件!!包括/var/run/utmp、/var/log/wtmp、/var/log/btmp。语法为:utmpdump [options] [filename]。修改文件实际就可以抹除系统记录,所以一定要设置好权限,防止非法入侵。
例子:修改utmp或wtmp。由于这些都是二进制日志文件,你不能像编辑文件一样来编辑它们。取而代之是,你可以将其内容输出成为文本格式,并修改文本输出内容,然后将修改后的内容导入回二进制日志中。如下:
utmpdump /var/log/utmp > tmp_output.txt #导出文件信息
#<使用文本编辑器修改 tmp_output.txt>
utmpdump -r tmp_output.txt > /var/log/utmp #导入到源文件中
31: crontab
crontab:参考:https://blog.csdn.net/lck898989/article/details/79119242
crobtab-l :查看定时任务
crontab-e:编辑定时任务
例子:
30 21* * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
32: kill
refer: https://www.jianshu.com/p/6c371828a856
注意: kill命令只是用来向进程发送信号的,而不是直接杀死进程。
-l 列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
如果不指定信号编号,则默认发送15号SIGTERM 信号。该信号是程序结束(terminate)信号,将终止所有不能捕获该信号的进程,通常用来要求程序自己正常退出。如果进程仍然终止不了,可尝试发送9号SIGKILL信号,强制杀死进程。
33: xargs
xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割)然后将参数传递给其后面的命令,作为后面命令的命令行参数
所以杀死多个进程:ps-aux | grep flume | awk '{print $2}' | xargs kill
34: du, df
du * -lh, 查看当前目录个文件占用磁盘大小
du /data/* -lh –max-depth=0 (note: max 前是两个-)
df * -h
35: mysql
mysql -h127.0.0.1 -uroot -psecurityths -P3307
类NUIX的系统中,mysql配置文件的位置一般在/etc/my.cnf或者/etc/MySQL/my.cnf
linux创建数据库时指定编码和排序规则:createdatabase anti_crawler_config default character set utf8 collateutf8_general_ci
36: mount
linux挂载Windows的NTFS文件后,是不可以修改文件的权限的。linux内核不支持修改ntfs文件的权限,chmod只能修改ext3文件的权限。
37: telnet
telnet ip port
检查端口连通性,端口的概念是tcp, udp中的。
38: ab
ab 压力测试
ab -n 1000 -c 100 -k www.baidu.com
-n 请求总数
-c 并发数
-k 激活HTTP中的“keepAlive”特性;
39: rsync
linux复制,拷贝,copy一个目录要除去一个目录,那么最好使用rsync
cd $workpath
rsync -ac –exclude nginx/logs -ac –exclude nginx/conf “./” /data/zhuyuanbing/openresty
表示将当前目录下的logs和conf目录除去之外的目录都拷贝到/data/zhuyuanbing/openresty下
40: wc
统计文件的个数ls -l | wc -l ,需要减1
ls | wc -l
ls | wc -w
wc -l a.txt
others: mutil directives
1)查看特定列
ps-ef | grep runserver | awk '{print $1,$2}'
2) 查看cpu信息
cat /proc/cpuinfo
3) 查看系统内核版本
cat /proc/version
4)查看系统版本
cat /etc/issue
5) 查看系统架构
arch
uname -m
6)创建文件
touch filename
7)查看文件类型
file filename
8)查看指令时内部还是外部
type cd
type ls
9) 两台机器传输文件
scp /data/waf [email protected]:/~
现在机器上的/data/waf目录拷贝到另一个机器上
10)pip包的位置
pipshow django, pipshow django | grep Location
11)检索最近操作的history
Ctrl + r