Git   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何无限地运行服务器脚本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我想无限期地在远程的linux服务器上运行一个asynchronous程序。 这个脚本不会向服务器本身输出任何东西(除了偶尔将信息写入MysqL数据库)。 到目前为止,我所能find的唯一选项是nohup命令:

nohup script_name &

据我所知,nohup允许命令运行,即使我退出SSH会话,而'&'字符让命令在后台运行。 我的问题很简单:这是做我想做的最好的方法吗? 我只是试图长时间运行一个脚本,偶尔停止更新。

另外,如果nohup确实是最好的SELEct,那么在需要时终止脚本的正确方法是什么? 杀死一个nohup过程的最好方法似乎有一些分歧。

谢谢

在Linux服务器上更改平台LSF作业脚本上的python版本

“/ usr / bin / ld:构buildQt应用程序时找不到-lGL”

为什么我不能在Linux上使用前导或尾随下划线来ping地址

android中的sHell脚本给出了[:not found

如何在c中编写一个简单的malloc函数

bashscript删除文件中的String

无法在mssql-server-linux容器中login到sql Server

在linux sHell中从“ftp”命令获得退出状态代码

在32位模式下的NASM x86_64汇编:为什么此指令产生RIP相对寻址代码

为CPAN(和CorporatePAN)打包perl脚本的推荐方法是什么?

你基本上问的是“如何创建一个守护进程?” 你想要做的是“守护进程”,有很多这样的例子在网络上浮动。 这个过程基本上就是你fork() ,子进程创建一个新的会话,父进程退出,子进程重复,然后@L_874_26@打开的文件句柄到控制终端(STDIN,STDOUT,STDERR)。

一个可用的包,可以为你完成所有的工作,叫做python-daemon 。

要执行优雅的@L_874_26@,请查看信号库以创建信号处理程序。

另外,在网上搜索“python守护进程”将会引出许多重新实现的通用守护进程: http ://code.activestate.com/recipes/66012/

如果你可以修改脚本,那么你可以捕获SIGHUP信号,并避免nohup的需要。 在一个bash脚本中,你会写:

trap " echo ignoring hup; " SIGHUP

您可以使用相同的技术来终止程序:在处理程序中捕捉SIGUSR1信号,设置一个标志,然后从主循环中正常退出。 这样,您可以发送您选择的信号,以可预见的方式停止您的程序。

在某些情况下,如果您想在远程机器/服务器上执行/启动某些脚本(会自动终止)并断开与服务器的连接。

例如:一个脚本运行在一个盒子上,当执行1)采取一个模型,并将其复制到一个custer(远程服务器)2)创建一个脚本,用于运行与模型的模拟,并将其推送到服务器3)启动脚本服务器和断开连接4)由此启动的脚本的职责是在服务器上运行模拟,一旦完成(需要几天的时间才能完成)将结果复制回客户端。

我会使用下面的命令:

ssh remoteserver 'nohup /path/to/script `</dev/null` >nohup.out 2>&1 &'

例如:

echo '#!/bin/bash rm -rf statuslist mkdir statuslist chmod u+x ~/monitor/concat.sh chmod u+x ~/monitor/script.sh nohup ./monitor/concat.sh & ' > script.sh chmod u+x script.sh rsync -azvp script.sh remotehost:/tmp ssh remoteshot '/tmp/script.sh `</dev/null` >nohup.out 2>&1 &'

希望这可以帮助 ;-)

如果您想(或必须)避免更改脚本本身,那么这是最简单的方法。 如果脚本总是像这样运行,那么可以编写一个包含刚输入的行的小脚本,然后运行它。 (或者使用别名,如果合适的话)

为了回答你第二个问题

$ nohup ./test & [3] 11789 $ Sending output to nohup.out $jobs [1]- Running emacs *h & [3]+ Running nohup ./test & $ kill %3 $ jobs [1]- Running emacs *h & [3]+ Exit 143 nohup ./test

Ctrl + c也可以工作(发送一个SIGINT)和kill一样(发送一个SIGTERM)

大佬总结

以上是大佬教程为你收集整理的如何无限地运行服务器脚本全部内容,希望文章能够帮你解决如何无限地运行服务器脚本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: