linux命令nohup LInux命令设置参数( 三 )


$
其中 , 第一列方括号中的数字表示作业序号,它是由当前运行的shell分配的,而不是由操作系统统一分配的 。在当前shell环境下,第一个后台作业的作业号为1,第二个作业的作业号为2,等等 。
第二列中的“ ”号表示相应作业的优先级比“-”号对应作业的优先级高 。
第三列表明作业状态,是否为运行、中断、等待输入或停止等 。
最后列出的是创建当前这个作业所对应的命令行 。
利用 jobs -l 形式,可以在作业号后显示出相应进程的PID 。如果想只显示相应进程的PID,不显示其它信息 , 则使用 jobs -p 形式 。
· fg命令
fg命令把指定的后台作业移到前台 。其使用格式是:
fg [job…]
其中 , 参数job是一个或多个进程的PID,或者是命令名称或者作业号(前面要带有一个“%”号) 。例如:
$ jobs
[2] + Running tar tv3 *
[1] - Running find / -name README -printlogfile
$ fg %find
find / -name README -printlogfile
注意,显示的命令行末尾没有“”符号 。下面命令能产生同样的效果:
$ fg %1
这样,find命令对应的进程就在前台执行 。当后台只有一个作业时 , 键入不带参数的fg命令,就能使相应进程移到前台 。当有两个或更多的后台作业时,键入不带参数的fg,就把最后进入后台的进程首先移到前台 。
· bg命令
bg命令可以把前台进程换到后台执行 。其使用格式是:
bg [job…]
其中 , job是一个或多个进程的PID、命令名称或者作业号,在参数前要带“%”号 。例如,在cc(C编译命令)命令执行过程中,按下Z键,使这个作业挂起 。然后键入以下命令:
$ bg %cc
该挂起的作业在后台重新开始执行 。
linux后台自动执行命令nohup与日志查看在linux上执行脚本linux命令nohup , 当退出页面或电脑锁屏后,脚本就停止执行linux命令nohup了 。对需要长时间运行linux命令nohup的脚本非常不友好 。
nohup(no hang up):可以让程序不挂断执行 。
:可以让程序在后台执行 。
“ nohup.log”: 表示将日志输出到nohup.log文件上 。
21:表示将正确日志、错误日志都输出到正确日志指定的文件(nohup.log文件)上 。
linux命令里面的nohup命令和 & 是一个意思吗?不挂断是什么意思?场景:
如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢?
hangup 名称的来由
在 Unix 的早期版本中,每个终端都会通过 modem 和系统通讯 。当用户 logout 时,modem 就会挂断(hang up)电话 。同理,当 modem 断开连接时 , 就会给终端发送 hangup 信号来通知其关闭所有子进程 。
解决方法:
我们知道 , 当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程 。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号 , 要么让进程运行在新的会话里从而成为不属于此终端的子进程 。
1. nohup
nohup 无疑是我们首先想到的办法 。顾名思义 , nohup 的用途就是让提交的命令忽略 hangup 信号 。让我们先来看一下 nohup 的帮助信息:
NOHUP(1)User CommandsNOHUP(1)
NAME
nohup - run a command immune to hangups, with output to a non-tty
SYNOPSIS
nohup COMMAND [ARG]...
nohup OPTION
DESCRIPTION
Run COMMAND, ignoring hangup signals.
--help display this help and exit
--version
output version information and exit
可见 , nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中 。一般我们可在结尾加上""来将命令同时放入后台运行,也可用"filename 21"来更改缺省的重定向文件名 。

推荐阅读