守护进程有什么用可以被kill吗

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)博客访问: 74763
博文数量: 14
博客积分: 0
博客等级: 民兵
技术积分: 145
注册时间:
认证徽章:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX 14:52:51
& & 在大部分情况下,守护进程是长时间运行在系统中的。为项目提供一种服务,如vsftp,dnfs-server等等。所以很多时候都需要能够进行方便的管理,如简单的开启、关闭、重启命令,开启自启动。那么如何实现守护进程的管理呢?就像vsftp (start | stop | restart | status)一样?下面以前面的demo为例,介绍如何进行进程的管理及服务的开机启动。
一、进程管理
& &在linux系统中,/etc/init.d目录下存放着系统安装的一些服务程序的管理脚本,里面包含了进程的开启、关闭、重启及状态查询。所以我们需要编写一个脚本放到/etc/init.d目录下进行进程的管理。下面是一个简单的管理代码,及相应的说明。
#!/bin/bash
#/etc/rc.d/init.d/sdaemon_log
# sdaemon_log This shell script takes care of starting and stopping sdaemon_log.
# description: sdaemon_log is the meta data server of demo.
# Source function library
# 引用其他脚本文件的函数
if [ -f /etc/rc.d/init.d/functions ]; then
&&&&. /etc/rc.d/init.d/functions
. /lib/lsb/init-functions
prog="daemon_log"
&&&&&&&&# Start daemons.
&&&&&&&&echo -n "Starting $prog ..."
&&&&&&&&echo ""
&&&&&&&&[ -r /var/lock/$prog ] && echo $prog is started && return 0 &# 建立文件,限制服务只运行一次
&&&&&&&&start_daemon /usr/local/bin/$prog & # daemon 化程序,运行程序
&&&&&&&&RETVAL=$?
&&&&&&&&echo
&&&&&&&&[ $RETVAL -eq 0 ] && touch /var/lock/$prog
&&&&&&&&return $RETVAL
&&&&&&&&# Stop daemons.
&&&&&&&&echo -n "Shutting down $prog ..."
&&&&&&&&echo ""
& & & & # killproc $prog
&&&&&&&&killall $prog & # 删除进程
&&&&&&&&RETVAL=$?
&&&&&&&&echo
&&&&&&&&[ $RETVAL -eq 0 ] && rm -f /var/lock/$prog & &# 删除文件锁
&&&&&&&&return $RETVAL
&&&&&&&&[ -r /var/lock/$prog ] && echo $prog is started && return 0
&&&&&&&&echo $prog is stopped && return 0
# See how we were called.
case "$1" in
&&&&&&&&start
&&&&&&&&;;
&&&&&&&&stop
&&&&&&&&;;
&&restart|reload)
&&&&&&&&stop
&&&&&&&&start
&&&&&&&&RETVAL=$?
&&&&&&&&;;
&&&&&&&&status
&&&&&&&&RETVAL=$?
&&&&&&&&;;
&&&&&&&&echo $"Usage: $0 {start|stop|restart|status}"
&&&&&&&&exit 1
exit $RETVAL
有几点需要说明:
& & &1、引用其他脚本文件的函数,这里用了两个daemon、killproc。在redhat、centos等系统中,这两个函数存在于/etc/rc.d/init.d/functions文件中,而我测试的环境是ubuntu10.04,没有这个文件,所以引用了/lib/lsb/init-functions函数库。脚本开始处进行了判断。而且daemon函数名改成了start_daemon。(关于lsb脚本的更多知识,请询问度娘)
& & &2、一般的服务程序在本机中只提供一个副本,所以需要加入文件锁进行多次运行的控制。这个根据需要,有些服务可能需要提供多个副本。
& & &3、删除进程时,脚本引用的函数库中有killproc函数,原理是根据进程名删除进程,但是在我的测试环境中始终不能删除进程,所以使用了killall命令,达到了相同的效果,redhat可以使用killproc这个函数删除。
& & &4、将上面的脚本,拷贝到/etc/init.d目录下命名为sdaemon_log,并增加执行权限 sudo chmod +x sdaemon_log。可以进行进程维护了:
& & & sdaemon_log start
& & & sdaemon_log stop
& & & sdaemon_log restart
& & & sdaemon_log status
二、服务开机启动(ubuntu)
& &将守护进程加入到开机启动的脚本中需要下面的命令(redhat及其他系统,请参照chkconfig的使用):
& &sudo update-rc.d sdaemon_log defaults
& &运行后结果:
& & 重启系统,daemon_log 就会随机启动了
& &通过下面的命令可以进行管理服务的启动/结束.
& & & & &&sudo service mongodb stop
& & & & &&sudo service mongodb start
& &服务的卸载通过sudo update-rc.d -f sdaemon_log remove 命令
阅读(1039) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
请登录后评论。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Ubuntu的守护进程怎么关闭,求解_百度知道
Ubuntu的守护进程怎么关闭,求解
我有更好的答案
ps -e|grep ssh发现sshd已经没有了;init.d/ssh stop还有kill &lt.d&#47。一天过去了,仍未能解决后来还尝试了&#47:ps -e|grep ssh #(ps -e:该命令是查询当前进程服务列表:00 sshd正常运行:用ps -e 查看当前进程;ssh start #(一般守护进程脚本文件都会在“/etc/init,后面问题出现了;defunct&6421 ? 00:00;ssh restart很可惜,运行结束命令之后重启:sudo service ssh stopsudo /etc/init,后来才知道(初学者。OpenSSH服务可以通过&#47,我可能是重复运行了启动服务的操作,在后来查看进程列表的时候发现sshd进程有两个,而且运行;pid&等方法都未能凑效,用ps查看时还是两个sshd,于是google一下;”路径下)然后查看服务是否已经启动:00:00 ssh-agent &lt:00:00 sshd 但是.d&#47? 00,并同时显示进程标识PID)这个时候会看到下面两行:2121 ? 00:00;etc/PID&成功杀死进程(两个sshd都被杀死):ps -e|grep ssh出现:yijiedao@ubuntu:~$ ps -e|grep ssh2121 OpenSSH是安全Shell协议族(SSH)的一个免费版本,但也可以根据需要通过网络守护进程(Internet Daemon)-inetd(注3)或Ineternet Daemon's more modern-xinted(注4)加载。。:sudo service ssh stop 也没有能够结束守护进程、问题解决经过本来在研究反病毒系统,用到了两台主机之间的文件传送技术。如果需要再启动ssh服务,就使用命令:sudo service ssh start此时查询服务,但是我这里就偏偏没有结束,于是各种搜索:这个时候查询当前有关ssh进程;sshd_config文件进行配置,考虑到安全性,选择使用OpenSSH,1、在ubuntu12.04下安装了OpenSSH:sudo apt-get install openssh-server2.d&#47。。。SSH协议族可以用来进行远程控件, 或在计算机之间传送文件:sudo kill &lt, rcp(注2)都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程的中的数 据,并由此来代替原来的类似服务。OpenSSH服务,sshd,找到sshd进程的PID,然后,对kill命令使用方法不熟)使用kill时候还需要家sudo,于是。还有的说用下面这样操作可以解决,我突然想到自己疏忽了一个重要细节当我用kill杀死进程的时候提示我“没有那个进程”;etc&#47? 00,各种尝试,中间还有几次出现了三个sshd进程,我那个郁闷啊,大家都在说用了上边这个stop命令之后就可以结束进程了;6421 。二:00 ssh-agent &defunct&gt、启动服务:sudo /etc/ssh&#47,是一个典型的独立守护进程(standalone daemon),如telnet(终端仿真协议)。而实现此功能的传统方式
采纳率:60%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 守护进程有什么用 的文章

 

随机推荐