linux添加守护进程

问题

linux(redhat)下,执行了

baseinfo.sh>baseinfo.log 2>&1 &

,系统显示是后台进程,退出ssh后,该进程被终止,导致进程无法长时间运行

解决方案

nohup baseinfo.sh>baseinfo.log 2>&1 &

添加如下代码,发现baseinfo.sh已经是后台进程,按理说,baseinfo.sh已经是后台进程了,加上nohup也能正常运行了,但是不知道为什么,我直接关掉ssh后,baseinfo.sh进程也退出了,后面我们使用了如下代码可以成功的添加了后台进程

nohup ./baseinfo.sh>baseinfo.log 2>&1 &

这里需要说明一下,将./baseinfo.sh的结果将标准输出的结果输出到baseinfo.log,如果不想要输出结果,可以将结果重定向到/dev/null丢弃输出结果,2>&1表明是将错误输出按照标准输出的方式同样处理,也就是将标准输出和错误输出 都输出到baseinfo.log中,最后一个&表示是一个后台进程

这里比上一条指令没有多什么,就多了一个./,但是为什么没加./时,退出ssh,进程就结束了,感觉很懵比,我在其他服务器没有加上./依然是能独立运行的守护进程。

参考资料:https://www.cnblogs.com/xianlai-huang/p/6543751.html

转载于:https://www.cnblogs.com/shenjie2017/articles/8182375.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux守护进程,也称为后台进程或服务进程,是一种在系统启动后持续运行并执行特定任务的程序。它们通常不会因为用户会话结束而关闭,即使用户注销或系统重启,这些进程也会继续运行。 在Linux中,让一个程序以守护进程的方式启动主要有以下几种方法: 1. **使用init或systemd**:Linux传统的初始化系统init(现在大多数发行版使用systemd)提供了`start`、`stop`、`restart`等命令来控制服务。在`/etc/init.d`目录下有对应的脚本文件,如`myservice.sh`,通过`sudo service myservice start`命令启动。 2. **systemctl**: 对于systemd系统,可以在`/etc/systemd/system`目录创建或编辑服务单元文件(如`myservice.service`),然后用`sudo systemctl start myservice`启动,或在`systemctl`命令行工具中使用更灵活的选项。 3. **cron jobs**:通过定时任务计划器cron,可以设置守护进程在特定时间或周期性地执行。 4. **写入rc.local或类似文件**:在系统的启动脚本中,如`/etc/rc.local`,添加守护进程启动的命令。 5. **环境变量**:有些服务可能会设置环境变量,如`DAEMON`或`PIDFILE`,用于指示其为守护进程运行,并提供进程ID供管理。 为了确保守护进程能在系统重启后自动启动,通常会在启动脚本的末尾加上`exit 0`(表示成功启动)或在systemd服务文件中设置`After=network.target`(等待网络服务启动后启动)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值