ps,就会发现没有了:
$ ps PID TT STAT TIME COMMAND 82374 p3 Ss 0:00.17 -bash (bash) 82535 p3 R 0:00.00 ps | 如果直接ps命令无法看到进程,那么就使用 ps & apos 两个结合命令来查看,一定能够看到进程.
再上面的基础上进程扩展,能够做成属于自己的cron程序,那就不需要cron啦,当然,这只是一种方式
例子二:服务器端的守护进程
这个例子跟网络有关,大致就是模拟使用php做服务器端,然后一直后台运行,达到服务器端Daemon的效果.
继续在我们的主目录下:/home/heiyeluren,编辑文件php_daemon2.php:
$ vi php_daemon2.php
输入如下代码(代码来自PHP手册,我进行了修改注释):
#! /usr/local/php/bin/php <?php /* 设置不显示任何错误 */ error_reporting(0); /* 脚本超时为无限 */ set_time_limit(0); /* 开始固定清除 */ ob_implicit_flush(); /* 本机的IP和需要开放的端口 */ $address = ''192.168.0.1''; $port = 10000; /* 产生一个Socket */ if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) { echo "socket_create() failed: reason: " . socket_strerror($sock) . "n"; } /* 把IP地址端口进行绑定 */ if (($ret = socket_bind($sock, $address, $port)) < 0) { echo "socket_bind() failed: reason: " . socket_strerror($ret) . "n"; } /* 监听Socket连接 */ if (($ret = socket_listen($sock, 5)) < 0) { echo "socket_listen() failed: reason: " . socket_strerror($ret) . "n"; } /* 永远循环监接受用户连接 */ do { if (($msgsock = socket_accept($sock)) < 0) { echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "n"; break; } /* 发送提示信息给连接上来的用户 */ $msg = "==========================================rn" . " Welcome to the PHP Test Server. rnrn". " To quit, type ''quit''. rn" . " To shut down the server type ''shutdown''.rn" . " To get help message type ''help''.rn" . "==========================================rn" . "php> "; socket_write($msgsock, $msg, strlen($msg)); do { if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) { echo "socket_read() failed: reason: " . socket_strerror($ret) . "n"; break 2; } if (!$buf = trim($buf)) { continue; } /* 客户端输入quit命令时候关闭客户端连接 */ if ($buf == ''quit'') { break; } /* 客户端输入shutdown命令时候服务端和客户端都关闭 */ if ($buf == ''shutdown'') { socket_close($msgsock); break 2; } /* 客户端输入help命令时候输出帮助信息 */ if ($buf == ''help'') { $msg = " PHP Server Help Message rnrn". " To quit, type ''quit''. rn" . " To shut down the server type ''shutdown''.rn" . " To get help message type ''help''.rn" . "php> "; socket_write($msgsock, $msg, strlen($msg)); continue; } /* 客户端输入命令不存在时提示信息 */ $talkback = "PHP: unknow command ''$buf''.rnphp> "; socket_write($msgsock, $talkback, strlen($talkback)); echo "$bufn"; } while (true); socket_close($msgsock); } while (true); /* 关闭Socket连接 */ socket_close($sock); ?>
| 保存以上代码退出.
上面的代码大致就是完成一个类似于Telnet服务器端的功能,就是当服务器端运行该程序的时候,客户端能够连接该服务器的10000端口进行通信.
加上文件的可执行权限:
$ chmod x /home/heiyeluren/php_daemon2.php
在服务器上执行命令:
$ nohup /home/hei |