文章目录

nohupnohup命令初识nohup命令语法nohup的原理如何查看nohup的进程ps | greppgrepjobspu -ux

如何关闭进程killpkill

结尾

nohup

nohup命令初识

在 Linux 中,nohup 命令 用于在后台运行命令,并将其输出重定向到一个文件中,即使退出终端或关闭会话,该命令也能够持久的运行。 通常情况下,我们使用 nohup 命令来运行那些需要较长时间才能完成的任务,或者需要在长时间运行的过程中保持连接的任务,我们java的jar包就是一个很好的选择。

nohup命令语法

语法:

nohup command [arg...] [arg &]

command :是要运行的命令及其参数,& :可以让命令在后台运行nohup 命令会将命令的输出转向到一个名为 nohup.out 的文件中。这个是默认的日志命令,可以通过tail -f nohup.out查看如果您不想将输出重定向到 nohup.out 文件,您可以使用 > 或 >> 运算符将输出重定向到其他文件中。

nohup java -jar xxx.jar > nohup.out &

nohup的原理

nohup 命令的原理是 将要执行的命令与当前终端会话进行分离,使其脱离终端的控制,并在后台持续运行。它实际上是使用了两个关键技术:进程分离和输出重定向。

进程分离:nohup 命令使用了 fork 和 exec 系统调用来创建一个子进程,并使子进程成为一个新的会话组的领导者。 这样可以使子进程与终端断开关联,进程不再受到终端关闭或用户注销的影响。输出重定向:nohup 命令将子进程的标准输出(STDOUT)和标准错误输出(STDERR)重定向到一个文件中,默认情况下是 nohup.out 文件。这样即使终端关闭,命令的输出依然可以写入到文件中。

同时需要注意以下几点:

当使用 nohup 命令运行一个程序时,该程序的标准输入(STDIN)将会被关闭。因此,如果程序需要从标准输入读取数据,可能需要通过其他方式提供输入。nohup 命令执行时,会产生一个 子进程,可能会导致一些资源的占用。如果运行的是占用资源较多的程序,需要注意系统的负载情况。nohup 命令并不会使命令变为守护进程(daemon process)。如果您希望在系统启动时自动运行某个命令,并将其作为守护进程运行,可以考虑使用其他工具,如 systemd 或 init.d。

如何查看nohup的进程

ps | grep

使用 ps 命令结合 grep 过滤器来查找包含特定关键词的进程。例如,使用以下命令可以查找包含关键词 “nohup” 的进程:

ps -ef | grep nohup

该命令将显示与 “nohup” 相关的进程列表。

pgrep

可以使用 pgrep 命令以及进程的名称或其他标识符来查找匹配的进程。例如,使用以下命令可以查找根据进程名称 “your_process_name” 执行的进程:

pgrep -l your_process_name

jobs

jobs 是一个用于查看当前终端会话中正在运行的作业(job)的命令。作业指的是在前台或后台运行的进程或命令。

使用 jobs 命令可以列出当前终端会话中的作业,并显示作业的编号和状态信息。以下是 jobs 命令的基本用法:

jobs [options]

常用的选项包括:

-l:显示详细信息,包括作业编号、进程 ID 和作业状态。-n:只显示最近创建的未通知作业。-p:只显示进程 ID。-r:只显示运行中的作业。-s:只显示停止的作业。

示例用法:

$ sleep 60 & # 在后台运行 sleep 命令

[1] 12345

$ jobs

[1]+ Running sleep 60 &

在上面的示例中,sleep 60 命令被放到后台运行,并显示了作业编号 [1]、进程 ID 12345 和作业状态 Running。

pu -ux

ps -ux 是一个常用的 Linux 命令,用于显示当前系统中运行的进程的详细信息。下面是 ps -ux 命令的解释:

ps -ux

-u 选项用于显示与当前用户相关的进程信息。-x 选项用于显示没有控制终端的进程。

该命令将显示包括以下列在内的进程列表:

USER:进程所属的用户名。PID:进程的 ID。%CPU:进程使用的 CPU 百分比。%MEM:进程使用的内存百分比。VSZ:进程使用的虚拟内存(以 KB 为单位)。RSS:进程使用的实际物理内存(以 KB 为单位)。TTY:进程所关联的终端。STAT:进程的状态(R 表示运行,S 表示睡眠,Z 表示僵尸等)。START:进程启动的时间或日期。TIME:进程消耗的 CPU 时间。COMMAND:启动进程的命令或可执行文件的名称。

示例输出如下:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 168872 9096 ? Ss 2023 0:05 /sbin/init

root 2 0.0 0.0 0 0 ? S 2023 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? I< 2023 0:00 [rcu_gp]

...

注意,ps -ux 命令会列出所有正在运行的进程的信息,包括系统进程和其他用户的进程。如果想要限制输出只显示与当前用户相关的进程,可以结合使用 grep 命令进行过滤。例如:

如何关闭进程

kill

使用kill命令关闭进程。kill命令用于向进程发送信号,可以用来终止一个进程。首先需要找到要关闭的进程的进程ID(PID),可以使用ps命令或者top命令来查看所有正在运行的进程。然后使用kill命令加上进程ID来关闭进程。例如,要关闭进程ID为1234的进程,可以运行以下命令:

kill 1234

默认情况下,kill命令发送的是SIGTERM信号,这是一个终止进程的常规信号。如果进程不响应SIGTERM信号,可以使用kill命令加上-9选项来发送SIGKILL信号,强制终止进程。例如:

kill -9 1234

pkill

使用pkill命令关闭进程。pkill命令可以根据进程的名称或者其他属性来关闭进程。例如,要关闭名称为"process_name"的进程,可以运行以下命令:

pkill process_name

默认情况下,pkill命令发送的是SIGTERM信号,可以使用-9选项来发送SIGKILL信号,强制终止进程。

使用killall命令关闭进程。killall命令可以根据进程的名称来关闭进程。例如,要关闭名称为"process_name"的进程,可以运行以下命令:

killall process_name

默认情况下,killall命令发送的是SIGTERM信号,可以使用-9选项来发送SIGKILL信号,强制终止进程。

结尾

恭喜小伙伴完成本篇文章的学习,相信文章的内容您已经掌握得十分清楚了,如果您对工作技巧的知识十分好奇,请接下来跟着学习路径完成相关的学习哦,相信你会做到的~~~

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

darr; ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: