Linux-linux下进程存在可是并没有执行程序的问题

发布于 2017-01-06 07:36:52 字数 354 浏览 1711 评论 3

我有个一个php程序每隔60秒检查当前是否有新的内容发布,有的话发布,同时判断是否有过期的内容要删除,有的话删除
采用的方式是
set_time_limit(0);
while (true) {
....
sleep(60);
}
然后再linux下 nohup 让改程序在后台执行
年前是没有问题的,可是今天查看数据的时候发现了异常,貌似是这个程序没执行
ps -ef | grep php 查看进程的时候这进程是存在的
后来把这个进程杀掉 有重新启动进程才ok的
请教一下,为什么会出现这样的问题,如果我在linux下用crontab 每隔60秒定时执行这个程序,会对性能有影响吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-03-17 05:15:48

下面是我贴了一个类似的问题,不知道对你是否有用!

Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:

/usr/local/mysql/bin/mysqld_safe --user=mysql &

 但是我们很多程序并不象mysqld一样可以做成守护进程,可能我们的程序只是普通程序而已,一般这种程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在后台能够一直运行,那么就使用nohup:

nohup /root/start.sh &

在shell中回车后提示:

[~]$ appending output to nohup.out

原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。

但是有时候在这一步会有问题,当把终端关闭后,进程会自动被关闭,察看nohup.out可以看到在关闭终端瞬间服务自动关闭。

咨询红旗Linux工程师后,他也不得其解,在我的终端上执行后,他启动的进程竟然在关闭终端后依然运行。

在第二遍给我演示时,我才发现我和他操作终端时的一个细节不同:他是在当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;而我是每次在nohup执行成功后直接点关闭程序按钮关闭终端.。所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。

灵芸 2017-01-29 04:32:39

你的程序间隔时间这么长,建议用crontab来做,会稳定得多,性能应该不会有多大影响,crontab本来每分钟激活一次,检查cron 文件列表,进而运行对应的程序

php程序跑的时间长了就是会遇到这些问题,我这边以前也有程序是这样,如果你害怕影响系统性能,程序还可以照样这么写,然后用crontab没半个小时或一个小时重启一次这个进程。

偏爱自由 2017-01-09 21:51:15

以前在c++遇到同样的问题,我的情况:
1.服务器时间同步造成的,系统时间有被后拉现象。比如:现在2点,一会被同步为 1 点。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文