Linux服務開機自啟動使用示例

2021-09-08 14:08:52 字數 3189 閱讀 6990

本文以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...