vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis
After=network.target
[Service]
Type=simple
PIDFile=/var/run/redis.pid
ExecStart=/opt/redis/src/redis-server /opt/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
MongoDB
vim /usr/lib/systemd/system/mongodb.service
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb-4.0.3/bin/mongod --config /usr/local/mongodb-4.0.3/conf/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb-4.0.3/bin/mongod --shutdown --config /usr/local/mongodb-4.0.3/conf/mongodb.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
注:Type類型設(shè)置為forking會(huì)導(dǎo)致當(dāng)我執(zhí)行systemctl命令后shell阻塞在那里,沒(méi)有像平時(shí)執(zhí)行命令那樣自動(dòng)結(jié)束(只能自己按Ctrl+C強(qiáng)制結(jié)束)
systemctl status redis.service 查看程序發(fā)現(xiàn)目標(biāo)程序啟動(dòng)是成功的剃法, 但狀態(tài)為activating (start)而不是activating (running)態(tài)
Type | 介紹 |
---|---|
Type=oneshot | 這一選項(xiàng)適用于只執(zhí)行一項(xiàng)任務(wù)遭笋、隨后立即退出的服務(wù)『刹ⅲ可能需要同時(shí)設(shè)置 RemainAfterExit=yes 使得 systemd 在服務(wù)進(jìn)程退出之后仍然認(rèn)為服務(wù)處于激活狀態(tài)辈末。 |
Type=notify | 與 Type=simple 相同瓶蝴,但約定服務(wù)會(huì)在就緒后向 systemd 發(fā)送一個(gè)信號(hào)。這一通知的實(shí)現(xiàn)由 libsystemd-daemon.so 提供渊跋。 |
Type=dbus | 若以此方式啟動(dòng)腊嗡,當(dāng)指定的 BusName 出現(xiàn)在DBus系統(tǒng)總線上時(shí),systemd認(rèn)為服務(wù)就緒拾酝。 |
Type=idle | systemd會(huì)等待所有任務(wù)處理完成后燕少,才開(kāi)始執(zhí)行 idle 類型的單元。其他行為與 Type=simple 類似蒿囤。 |
Type=forking | systemd認(rèn)為當(dāng)該服務(wù)進(jìn)程fork客们,且父進(jìn)程退出后服務(wù)啟動(dòng)成功。對(duì)于常規(guī)的守護(hù)進(jìn)程(daemon)材诽,除非你確定此啟動(dòng)方式無(wú)法滿足需求底挫,使用此類型啟動(dòng)即可。使用此啟動(dòng)類型應(yīng)同時(shí)指定 PIDFile=脸侥,以便 systemd 能夠跟蹤服務(wù)的主進(jìn)程 |
Type=simple | (默認(rèn)值) systemd認(rèn)為該服務(wù)將立即啟動(dòng)建邓。服務(wù)進(jìn)程不會(huì) fork 。如果該服務(wù)要啟動(dòng)其他服務(wù)睁枕,不要使用此類型啟動(dòng)官边,除非該服務(wù)是socket 激活型。 |
創(chuàng)建完redis.service后
systemctl daemon-reload
systemctl start redis
systemctl restart redis
systemctl stop redis