linux编写简单的service启动脚本,并可以使用systemctl status查看服务状态

linux编写简单的service启动脚本,并可以使用systemctl status查看服务状态

  • 当我们在linux上使用源码安装某个系统服务后,往往不能直接使用service 或者systemctl命令去启动这个服务。

  • 一般情况下我们会进入到安装目录的bin或者sbin目录下,找到那个启动命令,然后启动,或者直接将启动命令添加到PATH环境变量下。

  • 但是一般以这样的方式启动时,有些启动命令没有任何的提示,而且也不能像使用systemctl status [服务名],去查看这服务的状态,是启动还是关闭的。

  • 那有什么简单的方法可以实现,当启动某个服务时有文字提示,而且可以使用systemctl status [服务名]去查看它的状态呢?

    • 当然了,前提是你的linux系统本来就支持这个命令才行。
  • 其实很简单,只需要编写一个简单的启动脚本即可,接下来我用源码安装的httpd服务,做个示例。

httpd 启动脚本示例

  • 如图这是一个源码安装的httpd服务的安装目录列表

image-20220824100221066

  • 现在我们要启动,和关闭这个服务的方法如下

    [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) 去查看这个服务的状态,会显示服务没有找到

    image-20220824101259905

  • 这时候我们可以在/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			#赋予执行权限
    

    简单吧,就是这么几行就可以了。

    接下来,让我们测试一下。

image-20220824102214096

  1. 可以都看到,使用service命令,直接就可以对脚本进行启动了,非常方便。

​ 而且还自动增加了文字提示,非常直观。

  1. 而且如何实现的呢?我们明明没有写文字提示的代码,

​ 其实主要是因为这一行代码 . /etc/init.d/functions . 每次启动前,都加载了这个脚本。这个脚本是linux上本来就存在的。

​ 如果你把它删掉,你就会看到提示文字也消失了。但是服务还是可以启动的。

  1. 现在我们再使用systemctl status httpd命令测试一下,会发生什么。。。

image-20220824102904487

  1. 神奇吧!!!,它竟然可以运行了,其实这也是因为 . /etc/init.d/functions这行代码的作用。

    ​ 如果删掉这行代码,那systemctl status httpd也就失效了。

  2. 所以为了方便,我们也可以直接在启动脚本中加上这样一句话

    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

image-20220824103633501

测试成功,这样一个简单的,实用的,而且好用的启动脚本就写好了,是不是很简单呢!!!

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...