我想在unix机器的后台运行一段时间(1)循环的Perl脚本,直到杀死它为止。
这是一个远程计算机,我没有pipe理权限(所以出于某种原因,我不能使用守护进程::通用:: While1),我通过SSHlogin到它,我希望它继续运行后我注销。
nohup ./my_script.pl &
还有其他更好的方法吗?
`/ dev / urandom`适合模拟目的吗?
以数字顺序列出文件,而不是按字母顺序?
grep有限字符 – 一行
unix shell编程的特殊variables
按idsortingunix文件
在计算机上禁止编辑crontab(当运行背景和持久的进程不是)。
现代的Unix工具是用什么编程语言编写的?
用不同的参数重新运行以前的命令
我们如何检查string是否是版本号?
如何检查已经为VIRTUALENVWRAPPER_PYTHON = / usr / bin / python等安装了virtualenvwrapper
screen -d -m ./myProcess
你需要关闭stdout,stderr,stdin,否则你仍然绑定到那个特定的TTY
./my_script.pl >/dev/null 2>&1 </dev/null &
这应该做的伎俩。
我相信这应该在你的Perl脚本内工作。
$SIG{ HUP } = 'IGnorE';
注意nohup的手册页文件说:
为此,nohup将SIGHUP信号(3)(“终端线挂断”)设置为忽略,然后与任何参数一起执行实用程序。
片段位于perldoc perlipc:
use POSIX 'setsid'; sub daemonize { chdir '/' or die "Can't chdir to /: $!"; open STDIN,'/dev/null' or die "Can't read /dev/null: $!"; open STDOUT,'>/dev/null' or die "Can't write to /dev/null: $!"; defined(my $pid = fork) or die "Can't fork: $!"; exit if $pid; setsid or die "Can't start a new session: $!"; open STDERR,'>&STDOUT' or die "Can't dup stdout: $!"; }
但是我不确定setsid是否可以工作,如果你不是root的话。 如果没有,请关闭标准手柄后尝试双叉。
一些链接: 如何 , 守护进程
use Proc::Daemon; Proc::Daemon::Init;
这就是我用于我的Sendmail过滤程序,可能是最简单的方法。 该模块通过CPAN可用。
在shell的后台运行这个工作是很好的,取决于你想要投入多少手工劳动,以确保它连续运行。
我会使用crontab的@reboot(也可能是定期检查)。 但是,你需要考虑到这个过程可能会多次启动。 最简单的方法是使用锁定文件。 如果文件被锁定,请退出,否则继续执行任务。 请记住使用非阻塞检查,否则你会冒着死进程的风险浪费不必要的系统资源。
如果可用,屏幕也是一个选项。
crontab +屏幕可以结合使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。