ubuntu nohup php,nohup——Ubuntu中nohup和&的区别

本文详细讲解了在Linux shell中Ctrl+C和Ctrl+Z的区别,以及nohup与&命令在后台运行和持久性方面的差异。通过实例演示了如何使进程免受终端控制,提供了解决进程守护问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ctrl+c,ctrl+z等的区别

ctrl+c是强制中断程序,ctrl+z是暂停程序。在shell中,ctrl-d表示退出当前shell.

cee4964005c9a3b6e487826eebd6ba3d.png

ctrl+z的是将任务中止(暂停的意思),但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。

(可以这样理解:Ctrl+C相当于在window的任务管理器中结束任务;Ctrl+Z相当于界面上有两个窗口,其中暗掉的那个,fg相当于点击那个暗掉的窗口,bg相当于最小化那个暗掉的窗口。)

二、nohup和&的区别以及使用

可以先在ubuntu系统上运行个小程序,比如:

#include #include int main ()

{

int x = 0;

while(1)

{

printf("hello %d, pid %u, ppid %d\n", x++, getpid(), getppid());

sleep(1);

}

return 0;

}

然后会生成可执行程序a.out,然后用这个可执行文件在linux机器上进行测试!

1、&的意思-后台运行

&的意思是在后台运行,意思是说,当你在执行 ./a.out & 的时候, 即使你用ctrl C, 那么a.out照样运行(因为对SIGINT信号免疫)。但是要注意, 如果你直接关掉shell后, 那么, a.out进程同样消失。 可见, &的后台并不硬(因为对SIGHUP信号不免疫)。

2、nohup的意思-永久执行

nohup的意思是忽略SIGHUP信号,所以当运行nohup ./a.out的时候,关闭shell, 那么a.out进程还是存在的(对SIGHUP信号免疫)。但是,如果你直接在shell中用Ctrl C, 那么, a.out进程也是会消失的(因为对SIGINT信号不免疫)

用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行。

&是指在后台运行,但当用户退出(挂起)的时候,命令自动也跟着退出。

3、结论

所以,&和nohup没有任何关系, 要让进程真正不受shell中Ctrl C和shell关闭的影响, 那该怎么办呢? 那就用:

nohup ./a.out &

如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。 该命令的一般形式为:

nohup conmmand &

4、某个程序例子

nohup python PGM_proposal_generation.py 0 2500 &

0和2500是指输入到PGM_proposal_generation.py文件中的参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值