ps -ef
输出详解:
UID:启动进程的用户ID。
PID:进程的ID号,唯一标识一个进程。
PPID:父进程的ID号。
C:CPU使用率,表示进程占用的CPU时间比。
STIME:进程启动的时间。
TTY:进程关联的终端类型。如果进程没有关联到终端,则通常显示为?。
TIME:进程占用的CPU时间总量。
CMD:启动进程的命令名称及其参数。
grep
一、基本语法
grep [options] pattern [file...]
options:选项,可以用来控制grep的行为,如-i表示忽略大小写,-v表示反向匹配等。 pattern:要匹配的模式,可以是一个正则表达式或者普通字符串。 file:要搜索的文件,可以是一个或多个文件,也可以省略,默认为标准输入。
二、常用选项
-i:忽略大小写,使匹配不区分大小写。
-v:反向匹配,只输出不匹配的行。
-r 或 -R:递归搜索,对目录进行递归搜索。
-n:显示匹配行的行号。
-l:仅显示文件名,不显示匹配的行。
-c:统计匹配的行数。
-o:仅显示匹配到的部分。
-e pattern:指定多个模式。
-w:按照单词来匹配,即只匹配整个单词,而不是其中的部分。
-A [数字]:显示匹配行及其后面几行(after context)。
-B [数字]:显示匹配行及其前面几行(before context)。
-C [数字]:显示匹配行及其前后几行(context)。
--color:高亮显示匹配的模式。
三、正则表达式
grep命令支持使用正则表达式进行模式匹配,以下是一些常用的正则表达式的表示方法:
.:表示匹配任意单个字符。
*****:表示匹配前面的字符出现0次或多次。
?:表示匹配前面的字符出现0次或1次。
[]:用于表示匹配方括号内的任意一个字符。
^:表示匹配行首。
$:表示匹配行尾。
():将括号中的内容视为一个整体。
四、常见用法示例
1.在文件中搜索指定字符串
grep "要搜索的字符串" 文件名
2.忽略大小写搜索
grep -i "要搜索的字符串" 文件名
3.统计匹配到的行数
grep -c "要搜索的字符串" 文件名
4.显示匹配行的行号
grep -n "要搜索的字符串" 文件名
5.递归搜索目录下的文件
grep -r "要搜索的字符串" 目录名
6.反向搜索,只显示不匹配的行
grep -v "要搜索的字符串" 文件名
7.只输出匹配部分
grep -o "要搜索的字符串" 文件名
8.显示匹配行及其上下文
grep -C 2 "要搜索的字符串" 文件名
pgrep
常用选项
-f:匹配完整的命令行,而不仅仅是进程名。
-l:显示进程名以及进程ID。
-u:指定用户ID,搜索该用户启动的进程。
-v:反向选择,显示不匹配指定模式的进程ID。
-x:精确匹配进程名,要求完全匹配指定的字符串。
xargs
常用选项
-n [number]:指定每次执行命令使用的最大参数数量。例如,xargs -n 1 command将逐个执行command的一个参数。
-d [delimiter]:指定输入参数的分隔符。默认情况下,xargs以空格、制表符或换行符作为分隔符。
-I {}:指定一个替换字符串,用于在命令行中动态替换为实际的输入值。例如,xargs -I {} command {}将使用标准输入中的参数替换{}。
-t:在执行命令之前将要执行的命令打印到标准错误输出。例如,xargs -t command将在执行命令之前打印要执行的命令。
-p:在执行每个命令之前提示用户确认。例如,xargs -p command将在执行每个命令之前提示用户确认。
-r:当标准输入为空时,不执行命令。
-0:指定输入项以空字符而不是空格分隔。当处理包含空格或其他特殊字符的文件名时,这非常有用。
kill
基本语法
kill [options] SIGNAL [PID...]
options:可选参数,用于控制发送信号的行为。
SIGNAL:信号名称或编号,用于指定要发送给进程的信号。
PID:要发送信号的进程ID或进程ID列表。
常用信号
SIGTERM (15):请求终止进程。进程可以捕获并清理资源后退出。
SIGKILL (9):强制终止进程。不能被捕获或忽略。
SIGHUP (1):挂起信号。通常用于重新加载配置文件。
SIGINT (2):中断进程(通常由Ctrl+C触发)。
SIGSTOP:停止进程。不能被捕获或忽略。
SIGCONT:继续执行已停止的进程。
常用选项
-l 或 --list:列出所有可用的信号名称和对应的数字。
-s:指定要发送的信号名称或编号。
-p:显示进程的PID。
-a:发送信号给该用户所拥有的所有进程(需与-u选项一起使用)。
-q 或 --silent:不显示错误消息。
-v 或 --verbose:详细模式,显示信号名称和进程信息。
-w 或 --wait:等待进程终止。
示例用法
1.终止进程
kill 1234 # 或者更明确地指定信号 kill -SIGTERM 1234
2.强制终止进程
kill -9 1234
3.列出所有信号
kill -l
4.向进程组发送信号
kill -1 -g 1234 # 或者向进程组ID发送信号 kill -SIGTERM -1234
5.详细模式发送信号
kill -v -SIGTERM 1234
6.检查进程是否存在
kill -0 1234
注意事项
只有具有相应权限的用户(通常是进程的拥有者或root用户)才能发送信号给进程。
发送SIGKILL信号(信号9)是强制终止进程的最后手段,因为它不允许进程进行任何清理操作。在可能的情况下,应首先尝试发送SIGTERM信号,让进程有机会正常退出。
使用
killall
和pkill
命令可以根据进程名而不是进程ID来终止进程,这在某些情况下可能更方便。扩展应用
结合
ps
命令查找进程IDps aux | grep process_name # 然后使用kill命令终止指定的进程 kill PID
使用
killall
命令终止所有与指定进程名匹配的进程
killall process_name
使用
pkill
命令根据进程名终止进程
pkill process_name
ps -ef | grep cpolar | grep -v grep
ps -ef | grep cpolar | grep -v grep 详解(来源文心快码)
示例:
1.访问网页
#!/bin/bash
# 定义要访问的网页URL
url="http://www.example.com/page.html"
# 使用curl命令获取网页内容
content=$(curl -s $url)
# 将获取的内容保存到文件中
echo $content > page.html
2.查找进程
#!/bin/bash
PROCESS_NAME="nginx"
# 循环监控
while true; do
# 使用ps和grep查找进程
ps -ef | grep "$PROCESS_NAME" | grep -v grep > /dev/null
# 判断进程是否存在
if [ $? -ne 0 ]; then
echo "Process $PROCESS_NAME not found. Restarting..."
# 这里假设你有一个服务脚本来重启进程,比如/etc/init.d/$PROCESS_NAME restart
# 或者使用systemctl命令:systemctl restart $PROCESS_NAME.service
# 根据你的系统配置选择合适的重启命令
/etc/init.d/$PROCESS_NAME restart
fi
# 等待一段时间再检查(避免过度占用CPU资源)
sleep 5
done
3.判断网络