linux编写简单的service启动脚本,并可以使用systemctl status查看服务状态
-
当我们在linux上使用源码安装某个系统服务后,往往不能直接使用
service
或者systemctl
命令去启动这个服务。 -
一般情况下我们会进入到安装目录的bin或者sbin目录下,找到那个启动命令,然后启动,或者直接将启动命令添加到PATH环境变量下。
-
但是一般以这样的方式启动时,有些启动命令没有任何的提示,而且也不能像使用
systemctl status [服务名]
,去查看这服务的状态,是启动还是关闭的。 -
那有什么简单的方法可以实现,当启动某个服务时有文字提示,而且可以使用
systemctl status [服务名]
去查看它的状态呢?- 当然了,前提是你的linux系统本来就支持这个命令才行。
-
其实很简单,只需要编写一个简单的启动脚本即可,接下来我用源码安装的httpd服务,做个示例。
httpd 启动脚本示例
- 如图这是一个源码安装的httpd服务的安装目录列表
-
现在我们要启动,和关闭这个服务的方法如下
[root@server1 apache2]# bin/apachectl #启动服务命令 [root@server1 apache2]# bin/apachectl restart #重启服务命令 [root@server1 apache2]# bin/apachectl stop #关闭服务命令 [root@server1 apache2]# pwd /usr/local/apache2
-
然后使用systemctl status apachectl(httpd) 去查看这个服务的状态,会显示服务没有找到
-
这时候我们可以在/etc/init.d/目录下编写一个简单的启动脚本,用来解决这个问题
vim /etc/init.d/httpd #!/usr/bin/bash . /etc/init.d/functions EXEC=/usr/local/apache2/bin/apachectl #命令的绝对路径 case $1 in start) bash $EXEC $1 ;; stop) bash $EXEC $1 ;; restart) bash $EXEC $1 ;; * ) echo 'please enter start|stop|restart|status' ;; esac chmod a+x /etc/init.d/httpd #赋予执行权限
简单吧,就是这么几行就可以了。
接下来,让我们测试一下。
- 可以都看到,使用service命令,直接就可以对脚本进行启动了,非常方便。
而且还自动增加了文字提示,非常直观。
- 而且如何实现的呢?我们明明没有写文字提示的代码,
其实主要是因为这一行代码 . /etc/init.d/functions . 每次启动前,都加载了这个脚本。这个脚本是linux上本来就存在的。
如果你把它删掉,你就会看到提示文字也消失了。但是服务还是可以启动的。
- 现在我们再使用systemctl status httpd命令测试一下,会发生什么。。。
神奇吧!!!,它竟然可以运行了,其实这也是因为 . /etc/init.d/functions这行代码的作用。
如果删掉这行代码,那systemctl status httpd也就失效了。
所以为了方便,我们也可以直接在启动脚本中加上这样一句话
status)systemctl status httpd;;
这样我么就可以直接使用service httpd status,去查看httpd的运行状态了。
- 所以最终的脚本是这样
#!/usr/bin/bash
. /etc/init.d/functions
EXEC=/usr/local/apache2/bin/apachectl
case $1 in
start) bash $EXEC $1 ;;
stop) bash $EXEC $1 ;;
restart) bash $EXEC $1 ;;
status) systemctl status httpd ;; #新增的一行
* )
echo 'please enter start|stop|restart|status' ;;
esac
测试一下: service httpd status
测试成功,这样一个简单的,实用的,而且好用的启动脚本就写好了,是不是很简单呢!!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。