linux nohup命令使程序在后台运行的方法 【百科全说】-凯发k8官方旗舰厅

腾讯视频/爱奇艺/优酷/外卖 充值4折起

在linux操作系统中从后台一直运行某个程序的方法,就是使用nohup命令了。

unix/linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。

比如要运行mysql在后台:

复制代码

代码如下:

/usr/local/mysql/bin/mysqld_safe –user=mysql &

但是加入很多程序并不象mysqld一样做成守护进程,可能程序只是普通程序而已,一般这种程序使用 & 结尾,但是如果终端关闭,那么程序也会被关闭。
为了能够后台运行,可以使用nohup这个命令,比如有个test.php需要在后台运行,并且希望在后台能够定期运行,那么就使用nohup:

复制代码

代码如下:

nohup /root/test.php &

在shell中回车后提示:

[~]$ appending output to nohup.out

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

但是有时候在这一步会有问题,当把终端关闭后,进程会自动被关闭,查看nohup.out可

以看到在关闭终端瞬间服务自动关闭。

咨询红旗linux工程师后,他也不得其解,在我的终端上执行后,他启动的进程竟然在关闭终端后依然运行。在第二遍给我演示时,我才发现我和他操作终端时的一个细节不同:他是在当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;而我是每次在nohup执行成功后直接点关闭程序按钮关闭终端.。所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。这个细节有人和我一样没注意到,所以在这儿记录一下了。

附:nohup命令参考

nohup 命令

用途:不挂断地运行命令。

语法: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就是不挂起的意思( no hang up)。

该命令的一般形式为:

复制代码

代码如下:

nohup command &

使用nohup命令提交作业

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

复制代码

代码如下:

nohup command > myout.file 2>&1 &

在上面的例子中,输出被重定向到myout.file文件中。

使用 jobs 查看任务。

使用 fg %jobnumber是将任务拿到前台执行,拿到前台后如果要关闭这个任务按ctrl c组合键即可,但如果要暂停这个任务可以按ctrl z组合键这时就会将任务置于暂停状态。

[root@wangdm ~ 22:51 #81]# jobs
[2] stopped dd if=/dev/zero of=/dev/null bs=8k count=100000000
[3]- stopped dd if=/dev/zero of=/dev/null bs=8k count=100000000

如果想要暂停的任务继续在后执行可以使用 bg %jobnumber这样暂停后的任务继续在后台运行状态会变为running

有人可能注意到了我上面的两个任务编号2和3的后面分别跟了个' '和'-',这个' '代表什么意思呢?这个' '就是表示在当前窗口下后台默认调用的任务,听起来有点别扭下做一个实验:

上面我们看到的两个任务都是处于停止状态是吧,正常情况下让任务继续后台运行是bg %jobnumber命令吧我现在做如下操作,我直接输入bg任务2就被激活了,也就是说在此窗口下后台默认将带' '的任务2激活了,现在是3变成带' '了可以重复操作,现在应该理解了吧;fg跟这个是一样的情况有兴趣的朋友可以去试试

[root@wangdm ~ 23:09 #86]# bg
[2] dd if=/dev/zero of=/dev/null bs=8k count=100000000 &
[root@wangdm ~ 23:09 #87]# jobs
[2]- running dd if=/dev/zero of=/dev/null bs=8k count=100000000 &
[3] stopped dd if=/dev/zero of=/dev/null bs=8k count=100000000
[root@wangdm ~ 23:09 #88]# bg
[3] dd if=/dev/zero of=/dev/null bs=8k count=100000000 &
[root@wangdm ~ 23:11 #89]# jobs
[2]- running dd if=/dev/zero of=/dev/null bs=8k count=100000000 &
[3] running dd if=/dev/zero of=/dev/null bs=8k count=100000000 &

另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样就可以利用这些命令在后台上传和下载文件了。

09/03 05:00
在linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了: $ ./test.sh & [1] 17208 $ jobs -l [1] 17208 running ./test.sh & 对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行: $ ./test.sh [1] stopped ./test.sh $ bg %1 [1
09/09 12:53
作者:ningoo | 【转载须以超链接形式标明文章原始出处和作者信息】 在linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了: $ ./test.sh & [1] 17208 $ jobs -l [1] 17208 running ./test.sh & 对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行: $ ./test
02/09 20:54
今天小编介绍的是vivo手机怎么强制关闭应用程序在后台运行.具体如下:1. 打开手机,点击打开[设置]界面后,点击[更多设置]2. 在[更多设置]中,点击红色框的[应用程序]打开3. 在[应用程序]中点击红色框的[正在运行]4. 在[正在运行]中,我们可以选择想要的软件,点击打开5. 在[应用程序信息]界面,点击红色框的[停止]6. 弹出[要停止系统服务吗]窗口,点击[确定]即可关闭应用在后台运行以上就是vivo手机强制关闭应用程序在后台运行的办法.
05/07 01:19
使用windows7系统的用户都曾遇到过这样的情况,即系统安装一些软件后,每次电脑开机时软件都会自动进入 后台运行。这不但会占用不必要的内存空间,增加开机的时间,而且每次都需要进入后台手动进行关闭。那么遇到这种情况我们应该怎么办呢?一起来了解下禁止禁 止开机软件自动进入后台运行的方法吧! 一、软件本身配置 1、很多软件为了提高使用率则开机就会启动,有些则启动后位于系统托盘以图标的形式启动,不过一般的软件都可以设置是否随系统启动; 2、打开软件的设置,在其中找到开机启动的选项,取消勾选(或选择中开
12/09 07:25
对于很多人来讲手机后台运行软件过多,手机会出现卡顿、发热、闪退等现象;电脑后台运行关键过多缓存也会越多,就会出现卡机现象,其实无论是哪种设备只要后台软件运行软件过多都会使得运行速度变慢,这样也会给我们的体验带来不便。 后台软件运行过多对于手机、电脑的速度有影响,同样对于电视来讲也会有影响。很受年轻人欢迎的小米电视也有这样的情况,下面就介绍小米电视清理后台运行软件的方法,有需要的可以关注一下! 方法如下: 一、开机状态下在任何界面长按遥控器凯发app官网登录主页键就会自动跳出,你可以按左右选择你想要清理的应用,然后
05/08 13:51
最近用户在win7系统下载了qq音乐2016在安装时出现提示“安装或卸载程序已经在运行”,点击确定后再次运行安装程序或重启电脑后再次运行安装程序,依旧有此报错提示,导致无法安装,该怎么解决这个问题?下面一起看看win7安装qq音乐2016提示“安装或卸载程序已经在运行”的解决方法. 解决方法: 1.将安装程序名称进行重命名,例如:原安装程序名为"qqmusic.exe”: 2.重命名为"qqmusic_setup.exe", (重命名后的安装程序名称可自由更改)后qq音乐20
04/27 18:43
一.在linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了: $ ./test.sh & [1] 17208 $ jobs -l [1] 17208 running ./test.sh & 二.对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行: $ ./test.sh [1] stopped ./test.sh $ bg %1 [1]
08/24 21:02
电脑内存不够用?运行速度太慢了?你还在烦恼这一系列的问题吗?今天小编就给大伙推荐一款软件,保证你不再烦恼!电脑运行速度慢的问题再也不会发生在你的身上。 加速人生这款加速软件大家应该都熟悉:一键垃圾清理、自动内存优化、视频加速、关机加速等等功能得到用户们的认同;近期加速人生还推出了后台进程清理功能,不仅仅清楚后台静默运行的软件,还能够有效的清楚程序运行残留服务,更有效的提高了电脑的运行速度。 相信电脑软件自动运行软件大家都清楚,可是怎么有效的关闭多余的程序呢?现在就告诉你怎么解决:  
12/07 21:44
我们的手机后台都会运行着一些程序,如何才能查看到具体是哪些程序呢?并且怎么才能彻底关闭一些程序的后台运行呢?我们以华为手机为例,为大家介绍一下.一.查看后台运行程序1. 解锁手机后,选择桌面上的[设置]图标,打开.2. 然后在设置页面,选择[应用和通知]选项,打开.3. 然后在应用和通知中选择[应用管理]选项,打开.4. 接着在底部选择三点图标,打开[更多]选项.5. 在弹出的选项中选择[显示系统进程],打开.6. 如图,就是我们手机后台运行的所有程序了.二.关闭后台运行程序1. 我们返回到桌面
网站地图