但行好事
莫论前程❤

Linux学习之nohup命令

如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用 nohup 命令。

命令简介

$ nohup Command [ Arg … ] [ & ]

该命令可以在你退出帐户 / 关闭终端之后继续运行相应的进程。nohup 就是不挂起的意思(no hang up)。

nohup 运行由 Command 和相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。要运行后台中的 nohup 命令,添加 & ( 表示 and 的符号)到命令的尾部。

如果使用 nohup 命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为 nohup.out 的文件中,除非另外指定了输出文件。

使用举例

在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local/mysql/bin/mysqld_safe –user=mysql &。可是有很多程序并不想mysqld一样,这样我们就需要nohup命令,怎样使用nohup命令呢?这里讲解nohup命令的一些用法。

nohup /root/start.sh &

在shell中回车后提示:

[~]$ appending output to nohup.out

原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。

$ nohup java -jar adapter-minisite.jar /tomcat-1 /tomcat-2 > logs.txt 2>&1 &

在上面的例子中,运行命令 java -jar adapter-minisite.jar 输入参数 /tomcat-1/tomcat-2,输出被重定向到 logs.txt 文件中。

退出任务

如果运行的任务在当前 shell 终端,可以通过 jobs 命令查询相关信息,并且杀掉进程。

# 查看当前 shell 终端的后台运行任务进程信息
$ jobs
[1]+ Running nohup java -jar adapter-minisite.jar /tomcat-1 /tomcat-2 > logs.txt 2>&1 &

# 杀掉任务号
$ kill %1

# 或着找到 pid
$ jobs -l
[1]+ 11076 Running nohup java -jar adapter-minisite.jar /tomcat-1 /tomcat-2 > logs.txt 2>&1 &

$ kill 11076

# 或着
$ fg %n # 置为前端运行

Ctrl + c # 退出

如果非当前 shell 终端,可以通过 ps auxf | grep 'adapter-minisite' 获取 pid 然后 kill pid

赞(0) 打赏
未经允许不得转载:刘鹏博客 » Linux学习之nohup命令
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏