前言
目前正在出一个Linux命令
系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~
作为服务端开发,linux
命令还是要掌握一下的,可以做做基础性的运维。好了, 废话不多说直接开整吧~
kill
将指定的信号发送到指定的进程或进程组。如果未指定信号,则发送TERM
信号。TERM
信号将杀死不捕获该信号的进程。对于其他过程,可能需要使用KILL(9)
信号,因为无法捕获该信号
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称 -a 当处理当前进程时,不限制命令名和进程号的对应关系 -p 指定kill 命令只打印相关进程的进程号,而不发送任何信号 -s 指定发送信号 -u 指定用户
使用示例:
[root@iZ2ze5vrnucj8nu52fq932Z ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX [root@iZ2ze5vrnucj8nu52fq932Z ~]#
HUP 1 终端断线 INT 2 中断(同 Ctrl + C) QUIT 3 退出(同 Ctrl + \) TERM 15 终止 KILL 9 强制终止 CONT 18 继续(与STOP相反, fg/bg命令) STOP 19 暂停(同 Ctrl + Z)
kill -9
是我们使用的最多的信号,其实这种方式一点也不优雅,应该使用kill -15
信号,大部分程序接收到SIGTERM
信号后,会先释放自己的资源,然后再停止。但是也有程序可能接收信号后,做一些其他的事情(如果程序正在等待IO
,可能就不会立马做出响应,等到io
完成后在结束),也就是说,SIGTERM
多半是会被阻塞的
find
对列出的每个路径递归地遍历目录树,根据树中的每个文件计算表达式(由下面列出的“初选”和“操作数”组成)
语法:
find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
find
命令参数:
-print:find命令将匹配的文件输出到标准输出。 -exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。 -name 按照文件名查找文件。 -perm 按照文件权限来查找文件。 -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。 -user 按照文件属主来查找文件。 -group 按照文件所属的组来查找文件。 -mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。 -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。 -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。 -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。 -type 查找某一类型的文件,诸如: b - 块设备文件。 d - 目录。 c - 字符设备文件。 p - 管道文件。 l - 符号链接文件。 f - 普通文件。 -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。 -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。 -mount:在查找文件时不跨越文件系统mount点。 -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。 -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。 另外,下面三个的区别: -amin n 查找系统中最后N分钟访问的文件 -atime n 查找系统中最后n*24小时访问的文件 -cmin n 查找系统中最后N分钟被改变文件状态的文件 -ctime n 查找系统中最后n*24小时被改变文件状态的文件 -mmin n 查找系统中最后N分钟被改变文件数据的文件 -mtime n 查找系统中最后n*24小时被改变文件数据的文件
使用示例:
# 查找 linux_study目录下 txt结尾的文件 并输出到控制台 [root@iZ2ze5vrnucj8nu52fq932Z ~]# find ./linux_study -name '*.txt' -print ./linux_study/head/a.txt ./linux_study/test3.txt ./linux_study/cat/a.txt ./linux_study/cp/a.txt ./linux_study/cp/c.txt ./linux_study/cp/b.txt ./linux_study/test1.txt ./linux_study/mvd/e.txt ./linux_study/echo/a.txt ./linux_study/test2.txt [root@iZ2ze5vrnucj8nu52fq932Z ~]# # 查找 linux_study目录下 最后24h被改变的txt结尾文件 并执行cat命令 [root@iZ2ze5vrnucj8nu52fq932Z ~]# find ./linux_study -mtime +1 -name '*.txt' -exec cat {} \; hello1 hello2 hello3 hello4 hello5 hello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world hello world [root@iZ2ze5vrnucj8nu52fq932Z ~]#
grep
搜索任何给定的输入文件,选择与一个或多个模式匹配的行。默认情况下,如果模式中的正则表达式(RE)匹配输入行而没有尾随换行符,则该模式会匹配输入行。空表达式匹配每行。与至少一种模式匹配的每条输入线均写入标准输出
可以说这个命令使用的频率不亚于ls
,是我们日常搜索日志的神器
语法:
grep [-abcdDEFGHhIiJLlmnOopqRSsUVvwxZ] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color[=when]] [--colour[=when]][--context[=num]] [--label] [--line-buffered] [--null] [pattern] [file ...]
grep
命令参数:
-a --text 不要忽略二进制的数据。 -A<显示行数> --after-context=<显示行数> #除了显示符合范本样式的那一列之外,并显示该行之后的内容。 -b --byte-offset #在显示符合样式的那一行之前,标示出该行第一个字符的编号。 -B<显示行数> --before-context=<显示行数> #除了显示符合样式的那一行之外,并显示该行之前的内容。 -c --count #计算符合样式的列数。 -C<显示行数> --context=<显示行数>或-<显示行数> #除了显示符合样式的那一行之外,并显示该行之前后的内容。 -d <动作> --directories=<动作> #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。 -e<范本样式> --regexp=<范本样式> #指定字符串做为查找文件内容的样式。 -E --extended-regexp #将样式为延伸的普通表示法来使用。 -f<规则文件> --file=<规则文件> #指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。 -F --fixed-regexp #将样式视为固定字符串的列表。 -G --basic-regexp #将样式视为普通的表示法来使用。 -h --no-filename #在显示符合样式的那一行之前,不标示该行所属的文件名称。 -H --with-filename #在显示符合样式的那一行之前,表示该行所属的文件名称。 -i --ignore-case #忽略字符大小写的差别。 -l --file-with-matches #列出文件内容符合指定的样式的文件名称。 -L --files-without-match #列出文件内容不符合指定的样式的文件名称。 -n --line-number #在显示符合样式的那一行之前,标示出该行的列数编号。 -q --quiet或--silent #不显示任何信息。 -r --recursive #此参数的效果和指定“-d recurse”参数相同。 -s --no-messages #不显示错误信息。 -v --revert-match #显示不包含匹配文本的所有行。 -V --version #显示版本信息。 -w --word-regexp #只显示全字符合的列。 -x --line-regexp #只显示全列符合的列。 -y 此参数的效果和指定“-i”参数相同。
使用示例:
# 查找包含hello2的行文本 [root@iZ2ze5vrnucj8nu52fq932Z ~]# find ./linux_study -mtime +1 -name '*.txt' -exec grep 'hello2' {} \; hello2 # 查找不包含hello2的行文本 - 取反 [root@iZ2ze5vrnucj8nu52fq932Z ~]# find ./linux_study -mtime +1 -name '*.txt' -exec grep -v 'hello2' {} \; hello1 hello3 hello4 hello5 hello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world \nhello world hello world # 查找包含 hello1或者hello2的行文本 [root@iZ2ze5vrnucj8nu52fq932Z ~]# find ./linux_study -mtime +1 -name '*.txt' -exec grep 'hello1\|hello2' {} \; hello1 hello2
结束语
命令很多,大家不用去背,可以放到便签之类的工具中,用到的时候翻一下就好~
本着把自己知道的都告诉大家,如果本文对您有所帮助,点赞+关注
鼓励一下呗~