linux命令之nohup
Posted 生信学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux命令之nohup相关的知识,希望对你有一定的参考价值。
nohup命令参考
用途:该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部
将任务移至后台
在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要在后台运行一个aaa.sh的脚本:
./test2.sh &
可是当我们注销或者屏保后,这个脚本就会自动停止,这时我们就需要nohup命令, 怎样使用nohup命令呢?请看:
[wangdong@frontend ~]$ nohup ./test2.sh &
[1] 18569
[wangdong@frontend ~]$ nohup: ignoring input and appending output to `nohup.out'
注意:
只有当虚拟终端是 $ 或者 # 时候(如下图所示),才可关闭此终端,否则可能导致已经启动的进程被关闭(如果程序持续输出信息而没有出现 $ 或 #,按一下enter即可)
后台执行脚本(有多个脚本,每个窗口最好只执行一个),如果在同一个窗口执行,下个执行命令需要等待前面一个执行完成才能执行,这种效率不是我们要的。
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中,起到了log的作用。
如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。除非另外指定了输出文件:nohup command > myout.file 2>&1 &
/dev/null 是黑洞路径, 可用于用于丢弃输出,例如nohup COMMAND > /dev/null &
其他操作
用 jobs 命令可以查看当前Screen中的后台任务。
jobs
[1]+ Done nohup ./test2.sh
(1)jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业。
(2)jobs -l 选项可显示所有任务的PID,
(3)jobs的状态可以是running, stopped, Terminated
但当关闭该窗口在打开查看,这时候jobs已经不能使用,只能通过以下方式查看后台执行的脚本是否正在执行
ps -ef | grep conda
#grep conda用于过滤命令
用 fg JOBID 命令可以将后台的任务调入前台继续运行(Foreground)。
如果执行完后台脚本命令,当前窗口没有关闭,可以执行jobs查看当前窗口运行的后台进程的进程号,再通过fg n,将此后台进程调到前台执行。
命令在前台执行一半了,想转入后台执行
首先用 ctrl + z 快捷键可以将一个正在前台执行的命令放到后台,并且暂停
接着用 bg JOBID 命令可以将一个在后台暂停的命令,变成继续执行(Background)。
进程的终止
前台进程的终止:ctrl+c
后台进程的终止:
方法一:通过jobs命令查看job号(假设为num),然后执行kill num
方法二:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
补充
概念:当前任务
如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果未指定jobsid,则所变动的均是当前任务。
ps -ef 是用标准的格式显示进程的
其中各列的内容意思如下
UID //用户ID、但输出的是用户名
PID //进程的ID
PPID //父进程ID
C //进程占用CPU的百分比
STIME //进程启动到现在的时间
TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
CMD //命令的名称和参数
参考
(1)http://rajaruan.blog.51cto.com/2771737/822199
(2)https://wenku.baidu.com/view/28863c79581b6bd97f19ead8.html
(3)http://blog.sina.com.cn/s/blog_673ee2b50100iywr.html
以上是关于linux命令之nohup的主要内容,如果未能解决你的问题,请参考以下文章
Linux部署Django:报错 nohup: ignoring input and appending output to ‘nohup.out’