Linux Shell自动拉起进程

Linux Shell自动拉起进程,第1张

新建文件夹/root/test/,test文件夹中有myCPP.cpp,myTEXT.txt,restart.sh

该文件的功能是每隔5s往myTEXT.txt中写入当前时间

编译得到可执行文件mycpp: g++ myCPP.cpp -std=c++11 -o mycpp

注意有时候因为权限问题会导致shell拉起失败,这里粗暴地开放所有权限 chmod 777 mycpp

shell脚本,检测目标程序是否处于运行状态,如果不运行则将其拉起。

加上crontab就可以让脚本定时执行,一旦发现进程没有运行,则启动该进程,这样就实现了进程的自动拉起。

通过 crontab -e 进入类似vim的 *** 作界面,在文件末尾补充 */1 * * * * /root/test/restart.sh /root/test/mycpp&,让restart.sh脚本每一分钟运行一次(即每分钟检测一次mycpp是否正在执行)

查看mycpp进程是否在执行 ps -ef | grep mycpp

查看mycpp执行写入的结果 tail -f myTEXT.txt

原文及更新: https://neucrack.com/p/91

直接在/etc/rc.local(/etc/rc.d/rc.local)文件中添加即可

上面这脚本实际上在使用时出现了问题, /home/neucrack/software/ss/start_ss_local.sh 这个命令始终没有被执行,原因是 /home/neucrack/software/ss/start_kcptun_client.sh 中的命令阻塞了进程,导致后面一句始终没有执行,可以将他们分别放到后台执行就行了,如何在后台执行可以看文章最后一部分

也可以自己手动在rc*.d中建立软连接

桌面系统搜索 启动 ,打开启动管理器 添加删除即可

一般有以下几种方法:

1)在输入命令的最前面加上 nohup 命令

如 nohup your_command & 这样命令在你退出后仍然会在后台执行

2) setsid 命令

setsid your_command 该命令的结果是使你所运行的命令的父进程为init,所以只有关机该进程才会停止

3) (your_command &)

就是用括号将你的命令括起来,这样做也是使命令的父进程为init

4) disown

当你在命令行下输入 your_command &后命令就在后台执行了,然后执行jobs命令,该命令会列出当前正在后台执行的命令。例如输入命令“top&”

然后执行"jobs"

输出结果是

[1] + Suspended (tty output) top

注意行开头方括号内的数字,该数字叫做jobspec,是给当前后台运行的job的编号。这是你只要在命令行下输入"disown -h 1" 后台运行的top命令就不会受到hangup信号的影响了。

5)使用 screen 命令

在命令行下输入screen命令就开启了一个screen进程,它就好像是一个全新的命令运行环境,在该环境中你可以像在正常的terminal下那样执行

命令,但是这个screen是不受其父进程的hangup信号的影响的,既然screen不受其父进程影响,当你意外掉线或者退出系统时,在screen

中仍在执行的命令仍然会继续执行。关于screen命令的使用方法你可以再去查阅相关资料。

这个说法似乎不太现实, 不过理解楼主的意思。

如果端口被占用的,那么再使用的话, 是不行的。

必须要等没有用的时候才行,楼主说提前占用, 那就必须要程序运行才行啊,或者通过root管理一下, 只有root能开端口。

这个可以做系统管理的。

这个能帮楼主。

以后有linux方面的问题, 比如系统管理, shell编程, apache的配置, python开发需求运维管理的,都能啊


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7447397.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存