CentOS安装daemontools工具管理服务进程

发布时间:浏览:96

环境介绍:CentOS7.5 x86_64位最小安装

一、软件包下载安装过程

1.2sudo编译安装

[root@git-server daemontools-0.76]#sudo package/install 链接./src/* 到./compile.编译./compile.sh find-systype.sh systyperm 中的所有内容-fcompilesh print-cc.shcompilechmod 555编译./编译byte_chr.c。 。 。环境- /bin/sh rts.tests 21 | cat -v rtsrm -f sysdepscat systype 编译加载sysdepsgrep sysdep direntry.h sysdepsgrep sysdep haswaitp.h sysdepsgrep sysdep hassgact.h sysdepsgrep sysdep hassgprm.h sysdepsgrep sysdep 选择.h sysdepsgrep sysdep uint64。 h sysdepsgrep sysdep iopause.h sysdepsgrep sysdep hasmkffo.h sysdepsgrep sysdep hasflock.h sysdepsgrep sysdep hasshsgr.h sysdeps将命令复制到./command.创建符号链接daemontools -daemontools-0.76.在/command 中创建命令链接. /usr/local/bin 中的兼容性链接.创建/service.将svscanboot 添加到inittab.init 现在应该启动svscan。查看inittab,可以在文件末尾看到这样一行: [root@git-server daemontools -0.76]# tail -1 /etc/inittab SV:123456:respawn:/command/svscanboot 使用sudo是因为安装脚本会在下面创建两个目录根目录/:/service 和/command 目录。 /service目录用于存储由daemontools管理的进程。请注意,只有连接可以存储在/service 目录中。 /command命令下存放的是daemontools的一些常用命令。

二、配置daemontools

配置启动项,在/etc/rc.local=/etc/rc.d/rc.local末尾添加csh -cf '/command/svscanboot':开机自动启动

[root@git-server 命令]# sed -i '$acsh -cf \x27\/command\/svscanboot \x27' /etc/rc.local[root@git-server 命令]# tail -2 /etc/rc .local csh -cf '/command/svscanboot '[root@git-server command]# sh /etc/rc.local/etc/rc.local: line 15: csh: command not found 错误,所以安装csh命令

[root@git-server command]# yum install tcsh -y[root@git-server command]#which tcsh/bin/tcsh[root@git-server command]#which csh/bin/csh 再次安装成功:

[root@git-server 命令]# sh -x /etc/rc.local + bash /var/lib/subsys/local+ csh -cf '/command/svscanboot '[1] 13689[root@git-server 命令]# [root@git-server 命令]# ps -ef|grep svsroot 13689 1 0 22:55 pts/3 00:00:00 /bin/sh /command/svscanbootroot 13694 13689 0 22:55 pts/3 00:003336 00 0 svscan /serviceroot 13768 9451 0 22:55 点/3 00:00:00 grep --color svs 或者直接在后台运行

[root@git-server 服务]# /command/svscanboot [root@git-server 服务]# ps -ef|grep svsroot 1044 7763 0 22:37 pts/2 00:00:00 grep --color svsroot 30451 9451 0 22:34 pts/3 0 0:00:00/bin/sh /command/svscanbootroot 30458 30451 0 22:34 pts/3 00:00:00 svscan /service 来自ps -ef | 的输出grep svs,可以看到svscan作为svscanboot的子进程运行。而svscan监控的目录是/service目录。

三、daemontools的简单介绍

daemontools 是一个守护进程工具,可防止用户进程意外退出。 daemontools工具有以下截图:

3.1、常用的命令介绍:

(1) svscanboot命令一般不需要手动输入,因为它通常会在Linux系统启动时自动启动。因此添加并启用自动启动:/etc/rc.local,直到Linux启动时它也启动。 svscanboot启动后,会启动svscan,svscan会启动supervisor。 Supervise 将启动并监视/service 中存储的服务目录中运行的可执行文件。

(2)svscansvscan会启动/service目录下所有服务的supervisor进程。 svscan会为每个服务启动一对supervisor服务:一个是s子目录(即服务进程的项目目录),实际上是软连接;一个是s子目录下的log目录(如果有的话)。 supervise会执行s子目录下的run脚本,监控run脚本启动的进程,并启动s/log目录下的run脚本。 s/log目录下的run脚本用于将s目录下的run脚本的日志输出到指定目录。 svscan 每5 秒检查一次/service 目录。如果有新的服务,就会启动新的supervisor;如果supervisor意外退出,supervisor将重新启动。 (3)supervisorsupervise用于执行/service目录下服务的运行脚本。如果运行脚本存在,它将每隔几秒执行一次。 /service下的服务目录s下会有一个supervisor目录,用于存放进程状态的二进制格式信息。 svstate 将读取此状态信息

[root@git-server nginx]# svstat /service/nginx/service/nginx: up (pid 19169) 0秒[root@git-server nginx]# (4)svc命令svc opts servicesopts是一系列参数,services是指/service下的服务目录。 opts参数如下:-u : up。如果服务未运行,请启动它们。如果服务停止,请重新启动它们。 -d : down,如果服务正在运行,则向其发送TERM(终止)信号,然后发送CONT(继续)信号。停止后,请勿再次启动。 -o : 一次,如果服务没有运行,则启动它,但停止后不要再次启动它。只需运行一次即可。 -p : 暂停,向服务发送停止信号。 -c : 继续,向服务发送CONT 信号。 -h : 挂断,发送HUP信号到服务。 -a : 警报,向服务发送ALRM 信号。 -i:中断,发送INT信号给服务。 -t : 终止,向服务发送TERM 信号。 -k : Kill,向服务发送KILL 信号。 -x : exit,supervisor会在服务停止后立即退出,但值得注意的是,如果你在稳定的系统上使用这个选项,你就已经开始犯错误了:supervisor被设计为永远运行。要关闭服务进程,通常使用-dk参数。此时supervisor进程并没有关闭,所以服务进程仍然可以重新启动。即使supervisor进程死掉了,svscan仍然会重启supervisor,supervisor会重新运行服务进程的运行脚本。

接口svc opts services opts 是一系列getopt 样式的选项。 services 由任意数量的参数组成,每个参数命名一个由supervise 使用的目录。 svc 依次将所有选项应用于每个服务。这里是选项: -u: 上。如果该服务未运行,请启动它。如果服务停止,请重新启动它。 -d: 向下。如果服务正在运行,请向其发送TERM 信号,然后发送CONT 信号。停止后,请勿重新启动。 -o: 一次。如果该服务未运行,请启动它。如果停止,请勿重新启动。 -p: 暂停。向服务发送停止信号。 -c: 继续。向服务发送CONT 信号。 -h: 挂断。向服务发送HUP 信号。 -a: 警报。向服务发送ALRM 信号。 -i: 中断。向服务发送INT 信号。 -t: 终止。向服务发送TERM 信号。 -k: 杀死。向服务发送KILL 信号。 -x: 退出。一旦服务关闭,supervise 将立即退出。如果您在稳定的系统上使用此选项,那么您就做错了;监督被设计为永远运行。 (5) svstat

[root@git-server服务]# ps -ef|grep svsroot 13689 1 0 22:55 pts/3 00:00:00 /bin/sh /command/svscanbootroot 13694 13689 0 22:55 pts/3 00:003336 00 0 svscan /serviceroot 21765 7763 0 23:06 点/2 00:00:00 grep --color svs 查看服务状态: [root@git-server nginx]# svstat /service/nginx/service/nginx: up (pid 19169) 0秒

四、举例演示:

配置一个服务很简单:1 ) 创建一个目录,目录下放置运行脚本2) 运行脚本执行启动服务的命令3) 建立/service的下一个链接

[root@git-server service]# mkdir /data/nginx -p[root@git-server service]# cat /data/nginx/run #!/bin/bashexec service nginx start stop nginx service [root@git-server nginx]# 服务nginx 停止

[root@git-server 服务]# chmod +x /data/nginx/run [root@git-server 服务]# ln -sv /data/nginx /service/nginx`/service/nginx' -`/data/nginx '神奇的是最后一句话。创建链接后,daemontools 将自动为您启动nginx 服务。刚才停止了nginx服务,然后再次启动服务是否:如下图:

停止监控服务:

[root@git-server service]# svc -d /service/nginx[root@git-server service]# svstat /service/nginx/service/nginx: down 213秒,正常up 停止nginx服务后,nginx服务会不再需要重启[root@git-server nginx]# service nginx stop 如果不再需要daemontools 来保护某个服务,完成上述操作后可以删除/service 下的相应目录。服务所在目录/service

启用nginx服务监控:

[root@git-server service]# svc -u /service/nginx[root@git-server service]# svstat /service/nginx/service/nginx: up (pid 23563) 1秒nginx服务再次启动

用户评论

病态的妖孽

终于找到解决系统服务管理问题的文章了!CentOS自带的脚本总觉得过于繁琐,用daemontools感觉更简洁高效,学习下来感觉很有用了,赶紧去实践一下!

    有17位网友表示赞同!

十言i

这篇博文写的很详细,连安装过程都一步步讲解得很清楚,新手也能跟着操作。我也一直在寻找适合管理服务进程的工具,看來daemontools挺不错,以后可以用它来管理我的webservre!

    有13位网友表示赞同!

颓废人士

我更喜欢直接使用systemd管理服务,daemontools感觉过于古老了,而且管理起来也缺乏一些现代化功能。不过这篇博文还是有价值的,对于习惯使用传统命令行工具的人来说,daemontools可能是不错的选择。

    有10位网友表示赞同!

追忆思域。

用daemontools管理服务进程确实可以提高效率,它提供的日志和监控功能也很实用。以前我总是手动启动和停止服务,现在有了daemontools感觉管理起来轻松多了!

    有18位网友表示赞同!

百合的盛世恋

对于那些使用Docker部署应用的用户来说,daemontools可能不太必要了,毕竟Docker自己提供完善的服务管理机制。但如果是在传统环境下开发,daemontools无疑是一个好帮手。

    有19位网友表示赞同!

在哪跌倒こ就在哪躺下

安装过程看似简单,但操作细节还是需要注意一点。比如路径配置和权限设置等等,还需要仔细阅读文档和参考博文。总的来说,这篇博文还是比较实用的,给了我不少启发!

    有20位网友表示赞同!

孤岛晴空

Daemontools的使用技巧这块需要多练习才能掌握。感觉不像systemd那样用户友好,但毕竟它存在了几十年,肯定有一些优势在里面,继续学习学习看。

    有20位网友表示赞同!

最迷人的危险

这篇博文介绍的daemontools功能确实实用,尤其适合需要管理多个服务的应用场景。我会尝试用它来替换掉我现有的服务管理脚本,看看效果如何!

    有16位网友表示赞同!

灼痛

对于初学者来说,如果对Linux底层机制不熟悉,可能会觉得daemontools比较复杂,需要花更多时间学习理解。建议先从简单的案例开始练习,循序渐进。

    有18位网友表示赞同!

太易動情也是罪名

安装daemontools后感觉系统有点慢了,可能是我的硬件配置问题吧? 或者有人跟我分享下 daemontools对系统性能的影响吗?

    有17位网友表示赞同!

开心的笨小孩

为什么不能直接使用systemd呢?daemontools这种工具意义何在?个人觉得systemd已经足够强大,复杂度高一点也无妨,学习周期短点就行。

    有9位网友表示赞同!

今非昔比'

这篇博文写的太好了,终于让我找到了管理服务进程的理想工具!以后就可以告别那些繁琐的脚本了!

    有9位网友表示赞同!

微信名字

我正好在学习CentOS管理,这款 daemontools 工具很实用,感谢作者分享。我会尝试使用它来管理我的项目服务器。

    有16位网友表示赞同!

情字何解ヘ

博文介绍得比较详细,对于初学者来说,容易理解和操作。 daemontools 的功能也很强大,可以让我更好地管理服务进程。

    有5位网友表示赞同!

在哪跌倒こ就在哪躺下

daemontools 好像有点老旧了,systemd 现在 已经很流行了,性能也更好一些。<br>建议作者考虑使用其他更现代化的工具管理服务进程。

    有5位网友表示赞同!

青衫故人

博文的内容很有实用性,我正在学习 Linux 系统管理,这款 daemontools 工具对我有很大帮助。<br>感谢作者分享!

    有13位网友表示赞同!

陌上蔷薇

daemontools 的功能确实很强大,可以让你更好地控制和管理服务进程。这篇博文写的也很详细,非常适合新手学习!

    有20位网友表示赞同!

娇眉恨

使用daemontools 来管理服务进程,感觉比直接使用 shell 脚本更有保障,可以让我更好地管理系统资源。

    有11位网友表示赞同!

热点资讯