ps -ef

输出详解:

UID

PID

PPID

C

STIME

TTY

TIME

CMD

username

123456

1234

0

00:00

pts/0

00:00:00

ps -ef

‌UID‌:启动进程的用户ID。

‌PID‌:进程的ID号,唯一标识一个进程。

‌PPID‌:父进程的ID号。

‌C‌:CPU使用率,表示进程占用的CPU时间比。

‌STIME‌:进程启动的时间。

‌TTY‌:进程关联的终端类型。如果进程没有关联到终端,则通常显示为?。

‌TIME‌:进程占用的CPU时间总量。

‌CMD‌:启动进程的命令名称及其参数。

ps -ef 详解(来源文心快码)

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 "要搜索的字符串" 文件名

grep 详解(来源文心快码)

pgrep

常用选项

-f:匹配完整的命令行,而不仅仅是进程名。

-l:显示进程名以及进程ID。

-u:指定用户ID,搜索该用户启动的进程。

-v:反向选择,显示不匹配指定模式的进程ID。

-x:精确匹配进程名,要求完全匹配指定的字符串。

pgrep 详解(来源文心快码)

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:指定输入项以空字符而不是空格分隔。当处理包含空格或其他特殊字符的文件名时,这非常有用。

xargs 详解(来源文心快码)

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信号,让进程有机会正常退出。

使用killallpkill命令可以根据进程名而不是进程ID来终止进程,这在某些情况下可能更方便。

扩展应用

结合ps命令查找进程ID‌

ps aux | grep process_name
# 然后使用kill命令终止指定的进程
kill PID

‌使用killall命令终止所有与指定进程名匹配的进程‌

killall process_name

‌使用pkill命令根据进程名终止进程‌

pkill process_name

kill 详解(来源文心快码)

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.判断网络