linux后台执行命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux后台执行命令相关的知识,希望对你有一定的参考价值。

我用ssh登上linux后台,想运行备份命令,但是这个命令要执行很久,想让它自己在后台继续执行,怎么样在我断开ssh连接后命令还继续执行直到结束????谢谢
比如命令为 lftp mirror -r /var/web。

搜索nohup

nohup
nohup 命令
用途:LINUX命令用法,不挂断地运行命令。
语法:nohup Command [ Arg ... ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
退出状态:该命令返回下列出口值:
126 可以查找但不能调用 Command 参数指定的命令。
127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。
nohup命令及其输出文件
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。
该命令的一般形式为:nohup command &
使用nohup命令提交作业
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为 nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
在上面的例子中,输出被重定向到myout.file文件中。
使用 jobs 查看任务。
使用 fg %n 关闭。
另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样我就可以利用这些命令在后台上传和下载文件了。
参考技术A 在你的命令后面加一个符号&就可以了
就是lftp mirror -r /var/web &
然后自动转入后台执行,知道完成。
参考技术B 后面加一个 & 就OK了

如何在后台运行Linux命令?


通常情况下,在 Linux 终端中运行命令时,我们必须等前一命令执行完成后,在输入并执行后一条命令,称之为在前台或前台进程中运行命令,进程在前台运行时,将占用您的外壳,并且您也可以使用输入设备与其终端进行交互。

当一条命令执行需要很长时间才能完成,并且想同时运行其他命令怎么办呢?

  • 第一:启动新的 Shell 会话并在其中运行命令;

  • 第二:在后台运行命令;

后台进程是从终端启动并在后台运行,无需用户与其终端进行交互的进程及命令;

1、组合键及命令

以 httpd-2.2.17.tar.gz 压缩包为例,比如一个压缩包文件解压需在终端屏幕下解压很长时间,甚至要刷很长一段屏幕才能解压完毕,那么我们可以按下Ctrl+Z组合键,便可以暂停运行并隐藏到后台,将会返回一个停止序号,此时进程时暂停的,并不会继续运行。

输入bg命令即可继续将该任务在后台执行。

输入fg + 序号命令即可让进程返回到前台执行。

执行过程中,可以输入jobs命令来查看所有的后台任务了。

tar -zxf httpd-2.2.17.tar.gz                             ## 解压 httpd 压缩包
^Z                                                         ## 按下 Ctrl+Z 组合键暂停
[1]+  Stopped                 tar -zxf httpd-2.2.17.tar.gz

bg                                                       ## 输入 bg 命令,继续在后台运行
[1]tar -zxf httpd-2.2.17.tar.gz &

jobs                                                     ## 查看所有的后台任务
[1]+  Done                    tar -zxf httpd-2.2.17.tar.gz

2、&

在执行命令后加&,使其在终端后台运行。

# ./yum_install.sh &

执行完如上命令,yum脚本便在后台运行,虽然在后台运行了,但输出的内容还是会在终端上进行显示的,那么我们可以采用将执行后的命令输出结果重定向到文件中。

# ./yum_install.sh >> 202001141411out.txt 2>&1 &

将执行的结果重定向到202001141411out.txt文件中,2>&1将标准错误重定向到标准输出,判断yum脚本文件执行成功没成功,我们只需查看202001141411out.txt文件即可;

如果出现脚本文件执行了一段时间,卡死,无法继续运行了,可以通过第一种方法:jobs命令

# jobs -l

或者使用ps命令

# ps -aux | grep yum_install.sh

3、nohup

&:可以使命令在后台运行,当关闭控制台时,进程也将会被杀死,如果希望关闭控制台后,进程依旧运行,这时则需要使用nohup。

nohup:no hang up,不挂起的意思。

在执行命令最前面使用nohup,当关闭控制台时,进程依旧会在后台继续运行。

# nohup ./yum_install.sh &

如上nohup执行方式,当判断该脚本是否执行完毕,可执行命令ps -aux | grep yum_install.sh查看;

除此之外,我们可以将运行结果输出到nohup.log文件中,当没有指定输出重定向时,日志文件会默认输出到nohup.out文件;

# nohup ./yum_install.sh > nohup.log 2>&1 &

如果觉得这篇文章对你有所帮助,麻烦点个在看留言转发,支持一波,感谢!


推荐阅读

以上是关于linux后台执行命令的主要内容,如果未能解决你的问题,请参考以下文章

linux 命令后台执行 不能返回shell

linux后台自动执行命令nohup与日志查看

Linux在后台执行命令或脚本

在linux后台执行脚本

linux后台执行命令:&和nohup

linux后台任务执行