本文以redis服務為例,介紹了兩種服務自啟動的方法service,systemctl使用示例
1.修改redis.conf,允許後台執行
daemonize no 改為 daemonize yes
2.使用service命令
1)編寫啟動shell指令碼,命名為redis
redis檔案**如下:
#!/bin/sh
#configurations injected by install_server below....
exec=/home/shijingjing/redis-4.0.2/src/redis-server # redis-server的路徑
cliexec=/home/shijingjing/redis-4.0.2/src/redis-cli # redis-cli的路徑
pidfile=/var/run/redis_6379.pid # redis.conf裡有這個引數,將其複製過來
conf="/home/shijingjing/redis-4.0.2/redis.conf" # redis.conf的路徑
redisport="6379" # 埠
###############
# sysv init information
# chkconfig: - 58 74
# description: redis is the redis daemon.
### begin init info
# provides: redis
# required-start: $network $local_fs $remote_fs
# required-stop: $network $local_fs $remote_fs
# default-start: 2 3 4 5
# default-stop: 0 1 6
# should-start: $syslog $named
# should-stop: $syslog $named
# short-description: start and stop redis
# description: redis daemon
### end init info
case "$1" in
start)
if [ -f $pidfile ]
then
echo "$pidfile exists, process is already running or crashed"
else
echo "starting redis server..."
$exec $conf
fi;;
stop)
if [ ! -f $pidfile ]
then
echo "$pidfile does not exist, process is not running"
else
pid=$(cat $pidfile)
echo "stopping ..."
$cliexec -p $redisport shutdown
while [ -x /proc/$ ]
doecho "waiting for redis to shutdown ..."
sleep 1
done
echo "redis stopped"
fi;;
status)
pid=$(cat $pidfile)
if [ ! -x /proc/$ ]
then
echo 'redis is not running'
else
echo "redis is running ($pid)"
fi;;
restart)
$0 stop
$0 start
;;*)
echo "please use start, stop, restart or status as first argument"
;;esac
將redis檔案放入/etc/init.d資料夾中,也可以直接將安裝目錄下utils/redis_init_script檔案拷貝到該目錄下
更改檔案為可執行
chmod +x redis
2)將執行檔案放入,移除開機自啟動
update-rc.d redis defaults
update-rc.d redis remove
3)手動啟動關閉redis
/etc/init.d/redis start
/etc/init.d/redis stop
/etc/init.d/redis restart
3.使用systemctl命令
1)編寫.service檔案,redis.service
[unit]
description=redis
after=network.target
[service]
execstart=/usr/bin/redis-server /etc/redis.conf --daemonize no
execstop=/usr/bin/redis-cli -h 127.0.0.1 -p 6355 shutdown
[install]
wantedby=multi-user.target
將redis.service放入/etc/systemd/system資料夾下
2)將服務加入,移除開機自啟動
systemctl enable redis
systemctl disable redis
3)手動啟動關閉redis
systemctl start redis
systemctl stop redis
systemctl restart redis
4.service和systemctl比較
systemd相容service,更為的強大
編寫服務啟動指令碼也更簡潔,service需要編寫完整的shell指令碼,systemd只需要配置執行檔案,pid檔案路徑,剩下的交給systemd去做就可以了
Linux服務開機自啟動
有時候我們需要linux系統在開機的時候自動載入某些指令碼或系統服務 主要用三種方式進行這一操作 ln s 在 etc rc.d rc d目錄中建立 etc init.d 服務的軟鏈結 代表0 6七個執行級別之一 chkonfig 命令列執行級別設定 ntsysv 偽圖形執行級別設定 注意 1.這三...
Linux配置開機自啟動服務
linux伺服器存在重啟的情況,伺服器重啟後原來在跑的服務就停止了,由於伺服器重啟是個隨機事件,因此需要配置在重啟後自動開啟一些服務。本篇文章對於linux發行版debian和red hat。1 配置啟動指令碼 進入目錄 etc init.d 編寫要開機啟動的指令碼 custom service.s...
linux開機自啟動
可以看到 etc rc.d init.d 下有很多的檔案,每個檔案都是可以看到內容的,其實都是一些shell指令碼。系統服務的啟動就是通過 etc rc.d init.d 中的指令碼檔案實現的。我們也可以寫乙個自己的指令碼放在這裡。指令碼檔案的內容也很簡單,類似於這個樣子 例如起個名字叫做 haha...