一起来学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

结束语

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

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

相关文章
|
7天前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
50 23
Linux系统之whereis命令的基本使用
|
3月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
344 8
|
3月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
1128 6
|
3月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
194 3
|
3月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
144 2
|
20天前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
33 11
|
2月前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
99 14
Linux 10 个“who”命令示例
|
2月前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
203 20
|
2月前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
141 8
|
2月前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
128 7