前后台进程的本质区别

来源:互联网 发布:特征匹配算法 编辑:程序博客网 时间:2024/04/28 00:31

问题:

linux 前台进程,后台进程有什么本质的区别

虽然,很多人都说 在命令后加个&就是把该进程转到后台去,然后,前台还能做其他事情,但是,我觉得这是表面形象,其两者有什么本质区别呢?


你所谓的“后台进程”应该叫做 守护进程(daemon),init就是特殊的守护进程,PID为1。 

Linux启动时vmlinux内核加载initrd.img(ram disk)作为根文件系统并开始执行其中的init来加载各种模块、服务。
常见的Linux服务也都是守护进程,比如管理系统日志的rsyslogd,数据库服务mysqld等等。 

你也可以把一个运行在shell里的进程转到后台运行,比如把sar系统监控数据采集放到后台运行: 
?
nohupsar -u 2 >>sar.log 2>&1 &

加入到/etc/rc.local,还可以开机自启动:

?
nohupsar -u 2 >>/var/log/sar.log 2>&1 &

nohup的用途就是让提交的命令忽略sighup信号(一个kill信号,编号为1),Terminal关闭时就发送了这个信号给sar。

结尾加上"&"将命令同时放入后台运行,如果不使用nohup仅用&,Terminal关闭时sar进程也会退出。

2>&1 表示
错误重定向到标准输出,2表示stderr,1表示stdout。

其中日志归档可以使用logrotate(logrotate是一个/etc/cron.daily/任务,由cron守护进程定时执行)。

0 0
原创粉丝点击