参考链接:Linux的bg和fg命令简单介绍

在工作中,往往需要连接远程服务器,这是一个连接只有一个窗口(当然可以用xshell开启多个窗口连接),那么如何在当前窗口同时运行多个程序呢?这就需要用到&,bg,fg和nohup了。

关于 &

在命令的最后加上&,则可以安静运行程序(如果程序没问题或者不会一下子就运行完的话,击打任意键后程序就在后台运行着):
关于 &

jobs查看后台运行的程序

jobs命令查看后台运行的程序,可以看到后台程序和其编号i
job命令实例

fg命令将后台运行的命令调用到前台:foreground

fg i命令将后台运行的程序调用到前面来,其中i为jobs命令查看到的编号:
 fg命令将后台运行的命令调用到前台:foreground

当然,fg也可以将ctrl+z后挂起的程序(见下)唤醒到前台。

ctrl + z 将正在运行着的程序暂停(挂起)

当程序在当前窗口运行着时,用ctrl+z将正在运行着的程序暂停,或者说挂起:
ctrl+z将程序挂起

bg命令将挂起的程序放到后台运行

当程序挂起时,可以用bg i命令,将挂起的命令放于后台背景运行,其中ijobs的编号。
bg命令将挂起的程序放到后台运行

nohup命令

如果希望关掉ssh窗口后,程序依旧运行,并且可以重新登录新的ssh连接后还能看到程序的输出日志,那么就得用nohup命令。格式如下:
nohup 命令 [2>&1 重定向文件名] &
其中[]内的可选,如果没有,则将日志默认输出到当前目录下的nohup.out文件。

nohup默认

nohup自定义文件输出

nohup之后似乎无法重新唤醒到前台,只能通过tail -f 日志文件名来查看运行日志。

ps命令查看nohup的程序

使用nohup命令,并关闭当前ssh连接后,再重连,是不能通过jobs查看运行着的进程的。
这时可以通过ps -f | grep 程序名 来查找该进程的pid,方便查看是否运行和kill掉它。

ps命令查看nohup的程序

问题

screen功能是什么,似乎也可以做到后台运行?
nohup中的2>&1是什么意思?
以后有时间再完善。