一起来学Linux命令(五)

简介: 一起来学Linux命令(五)

前言

目前正在出一个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

结束语

命令很多,大家不用去背,可以放到便签之类的工具中,用到的时候翻一下就好~

本着把自己知道的都告诉大家,如果本文对您有所帮助,点赞+关注鼓励一下呗~

相关文章
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
18 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
15 2
|
24天前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
171 5
|
24天前
|
Linux
Linux系统之expr命令的基本使用
【10月更文挑战第18天】Linux系统之expr命令的基本使用
72 4
|
11天前
|
缓存 监控 Linux
|
14天前
|
Linux Shell 数据安全/隐私保护
|
15天前
|
域名解析 网络协议 安全
|
21天前
|
运维 监控 网络协议
|
22天前
|
监控 Linux Shell
|
3天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
18 3