在Linux中将脚本做成系统服务
有一些情况下,我们需要将某些脚本作为系统服务来运行。比如,在我使用workerman框架开发php程序时,需要使用管理员权限来运行,而且需要开机自行启动程序提供服务。这个时候将启动程序写成服务就可以很方便使用了,而且在使用时也可以直接sudo service xxxx start,不需要手动敲出来复杂的文件路径。(在不使用小技巧的时候可能要这样做: sudo php /path/to/file start -d)生命苦短,多用些小技巧可能提高我们生命的效率,呵呵扯远了。我们直接来看如何自己写一个,并将之作为系统服务,且开机自动运行。
首先,作为服务我们通常需要以下的功能:{start|stop|restart|status},接下来我就使用一段简单的bash脚本做一个演示:
1.编辑我们的脚本文件
vim myservice
脚本内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #!/bin/bash # #description: a demo #chkconfig:2345 88 77 lockfile= /var/lock/subsys/myservice touch $lockfile # start start(){ if [ -e $lockfile ] ; then echo "Service is already running....." return 5 else touch $lockfile echo "Service start ..." return 0 fi } #stop stop(){ if [ -e $lockfile ] ; then rm -f $lockfile echo "Service is stoped " return 0 else echo "Service is not run " return 5 fi } #restart restart(){ stop start } usage(){ echo "Usage:{start|stop|restart|status}" } status(){ if [ -e $lockfile ]; then echo "Service is running .." return 0 else echo "Service is stop " return 0 fi } case $1 in start) start ;; stop) stop ;; restart) restart ;; status) status ;; *) usage exit 7 ;; esac |
之后,我们将脚本复制至/etc/init.d文件夹中
#cp myservice /etc/init.d
将我们的myservice.sh添加至chkconfig
#chkcofig --add myservice
这样,在2345的运行级别下,myservice就会开机自动开启服务了,我们在任意目录下面都可以直接运行脚本 service myservice start
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现