nohup与&区别于使用

 nohup:运行不受挂起影响的命令。

SIGHUP 信号:在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联. 系统对SIGHUP信号的默认处理是终止收到该信号的进程。

先抛结论。

使用&后台运行程序:

①结果会输出终端;

②使用Ctrl+C发送SIGINT信号,程序免疫;

③关闭session发送SIGHUP,程序关闭;

使用nohup运行程序:

①结果默认输出到nohup.out;  #可能会一批批的刷进去,不那么实时

②使用Ctrl+C发送SIGINT信号,程序关闭;

③关闭session发送SIGHUP,程序免疫;

日常使用:

线上尽量nohup和&配合启动程序,如 nohup ./test &;

—— 同时免疫SIGINT和SIGHUP信号。

0、首先编写如下测试代码

#include "stdio.h"

int main()
{
	int i =0;
	while(1){
		printf("hello world! %d\n",i++);
		sleep(1);
	}
}

循环输出hello world!+循环轮次数,每次循环周期为1秒。

gcc test.c -o test

1、首先直接运行./test程序

效果如下:

①Ctrl+C组合键,收到SIGINT信号;程序默认行为是终止。

2、./test &运行程序

效果如下:

①首先会在终端显示进程号,这个就是启动进程的进程号。

②Ctrl+C发出SIGINT信号,程序会继续运行。

③退出session(关闭整个shell终端)后收到SIGHUP信号程序退出。

 3、使用nohup ./test运行程序

效果如下:

①前台没有出现进程号

②有一个“ignoring input and appending output to 'nohup.out'”的提示

③hello world!也没有出现在前台

④关闭session程序收到SIGHUP信号不会关闭

⑤Ctrl+C程序收到SIGINT信号会关闭

4、nohup与&联合使用

①SIGINT进程不会关闭

②SIGHUP进程不会关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱齿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值