以下是httpd进程的测试结果。分别是指定pid文件和不指定pid文件的情况。
[root@xuexi ~]# service httpd start [root@xuexi ~]# __pids_var_run httpd /var/run/httpd/httpd.pid [root@xuexi ~]# echo $? 0 [root@xuexi ~]# echo $pid 4863 [root@xuexi ~]# __pids_var_run httpd # 不指定pidfile时,将搜索/var/run/httpd.pid [root@xuexi ~]# echo $? 3 [root@xuexi ~]# echo $pid # 每次调用该函数Pid会重置 [root@xuexi ~]#__pids_pidof:获取进程pid。
pidfileofproc:获取进程的pid。但只能获取/var/run下的pid文件中的值。
pidofproc:获取进程的pid。可获取任意给定pidfile或默认/var/run下pidfile中的值。
都是获取进程pid,第一个函数和后两个的区别主要在于获取的pid是bash进程时更精确,第二个和第三个函数的区别在于第2个函数只能获取/var/run下pid文件中的pid值。
[root@xuexi ~]# service httpd restart [root@xuexi ~]# pidfileofproc httpd [root@xuexi ~]# pidofproc httpd 4872 4871 4870 4869 4868 4867 4866 4865 4863 [root@xuexi ~]# __pids_pidof httpd 4872 4871 4870 4869 4868 4867 4866 4865 4863上面pidfileofproc命令没有任何结果,因为httpd的pid文件为/var/run/httpd/httpd.pid,而非/var/run/httpd.pid。
如果将httpd的pid路径修改为/var/run/httpd.pid,再看它们的结果。
[root@xuexi ~]# service httpd stop [root@xuexi ~]# sed -i "s%^PidFile.*%PidFile /var/run/httpd.pid%" /etc/httpd/conf/httpd.conf [root@xuexi ~]# sed -i 's%^#PIDFILE.*%PIDFILE=/var/run/httpd.pid%' /etc/sysconfig/httpd [root@xuexi ~]# service httpd start [root@xuexi ~]# ls /var/run/httpd* /var/run/httpd.pid /var/run/httpd:再看它们搜索到的pid以及进程列表中httpd的pid和pid文件中的pid。
[root@xuexi ~]# __pids_pidof httpd 6235 6234 6233 6232 6231 6230 6229 6228 6226 [root@xuexi ~]# pidofproc httpd 6226 [root@xuexi ~]# pidfileofproc httpd 6226 [root@xuexi ~]# ps aux | grep http[d] root 6226 0.0 0.3 177844 3892 ? Ss 12:14 0:00 /usr/sbin/httpd apache 6228 0.0 0.2 177844 2532 ? S 12:14 0:00 /usr/sbin/httpd apache 6229 0.0 0.2 177844 2508 ? S 12:14 0:00 /usr/sbin/httpd apache 6230 0.0 0.2 177844 2508 ? S 12:14 0:00 /usr/sbin/httpd apache 6231 0.0 0.2 177844 2508 ? S 12:14 0:00 /usr/sbin/httpd apache 6232 0.0 0.2 177844 2508 ? S 12:14 0:00 /usr/sbin/httpd apache 6233 0.0 0.2 177844 2508 ? S 12:14 0:00 /usr/sbin/httpd apache 6234 0.0 0.2 177844 2508 ? S 12:14 0:00 /usr/sbin/httpd apache 6235 0.0 0.2 177844 2508 ? S 12:14 0:00 /usr/sbin/httpd [root@xuexi ~]# cat /var/run/httpd.pid 6226