在樹莓派上使Jexus以服務(wù)運(yùn)行懈凹、開機(jī)自啟

前言

此前介评,我們通過在樹莓派上借助Mono + Jexus 布署 .Net 4.0 WebForm應(yīng)用爬舰,簡單介紹了如何在樹莓派上布署 Jexus,并承載一個(gè)Asp.Net WebForm應(yīng)用情屹,但現(xiàn)在問題又來了垃你,一不小心停電重啟后,Jexus 卻沒有啟動(dòng)皆刺,而rc.local的啟動(dòng)方式屬于一次性的芹橡,無法通過統(tǒng)一的命令控制望伦,對(duì)于官方介紹上說的jws.start煎殷,請?jiān)徫覜]找到(手動(dòng)瀑布汗)豪直。

目標(biāo)

1弓乙、通過systemd管理jws服務(wù)钧惧,使其能通過systemctl控制啟動(dòng)、停止懈玻、重啟涂乌。
2英岭、使jws能夠開機(jī)自動(dòng)啟動(dòng)

名詞

systemd

systemd這一名字源于Unix中的一個(gè)慣例:在Unix中常以“d”作為系統(tǒng)守護(hù)進(jìn)程(英語:daemon诅妹,亦稱后臺(tái)進(jìn)程)的后綴標(biāo)識(shí)漾唉。

systemd 是一個(gè)專用于 Linux 操作系統(tǒng)的系統(tǒng)與服務(wù)管理器赵刑。 當(dāng)作為啟動(dòng)進(jìn)程(PID=1)運(yùn)行時(shí)场刑,它將作為初始化系統(tǒng)運(yùn)行牵现, 也就是啟動(dòng)并維護(hù)各種用戶空間的服務(wù)。

systemd 將各種系統(tǒng)啟動(dòng)和運(yùn)行相關(guān)的對(duì)象科乎, 表示為各種不同類型的單元(unit)茅茂, 并提供了處理不同單元之間依賴關(guān)系的能力捏萍。 而以 .service 為后綴的單元文件令杈, 封裝了一個(gè)被 systemd 監(jiān)視與控制的進(jìn)程逗噩。

單元文件中的 [Unit] 小節(jié) 包含與單元類型無關(guān)的通用信息跌榔,服務(wù)單元(.service)文件必須包含一個(gè) [Service] 小節(jié)僧须。

Unit小節(jié)

Description=
對(duì)單元進(jìn)行簡單描述的字符串。 用于UI中緊跟單元名稱之后的簡要描述文字柑蛇。 例如 "Apache2 Web Server"

Documentation=
一組用空格分隔的文檔URI列表耻台, 這些文檔是對(duì)此單元的詳細(xì)說明空另。 可接受 "http://", "https://", "file:", "info:", "man:" 五種URI類型。

Wants=
此選項(xiàng)是 Requires= 的弱化版摄杂。 當(dāng)此單元被啟動(dòng)時(shí),所有這里列出的其他單元只是盡可能被啟動(dòng)循榆。 但是析恢,即使某些單元不存在或者未能啟動(dòng)成功, 也不會(huì)影響此單元的啟動(dòng)秧饮。 推薦使用此選項(xiàng)來設(shè)置單元之間的依賴關(guān)系映挂。

Before=, After=
強(qiáng)制指定單元之間的先后順序,接受一個(gè)空格分隔的單元列表盗尸。 假定 foo.service 單元包含 Before=bar.service 設(shè)置柑船, 那么當(dāng)兩個(gè)單元都需要啟動(dòng)的時(shí)候, bar.service 將會(huì)一直延遲到 foo.service 啟動(dòng)完畢之后再啟動(dòng)泼各。 注意鞍时,停止順序與啟動(dòng)順序正好相反,也就是說, 只有當(dāng) bar.service 完全停止后逆巍,才會(huì)停止 foo.service 單元蒸苇。 After= 的含義與 Before= 正好相反味咳。 假定 foo.service 單元包含 After=bar.service 設(shè)置全陨, 那么當(dāng)兩個(gè)單元都需要啟動(dòng)的時(shí)候, foo.service 將會(huì)一直延遲到 bar.service 啟動(dòng)完畢之后再啟動(dòng)。 注意替久,停止順序與啟動(dòng)順序正好相反,也就是說, 只有當(dāng) foo.service 完全停止后,才會(huì)停止 bar.service 單元怖竭。 注意,此二選項(xiàng)僅用于指定先后順序允趟, 而與 Requires=, Wants=, BindsTo= 這些選項(xiàng)沒有任何關(guān)系分唾。 不過在實(shí)踐中也經(jīng)常遇見將某個(gè)單元同時(shí)設(shè)置到 After= 與 Requires= 選項(xiàng)中的情形弧蝇。 可以多次使用此二選項(xiàng)睦授,以將多個(gè)單元添加到列表中。 假定兩個(gè)單元之間存在先后順序(無論誰先誰后)疗隶,并且一個(gè)要停止而另一個(gè)要啟動(dòng),那么永遠(yuǎn)是"先停止后啟動(dòng)"的順序坚弱。 但如果兩個(gè)單元之間沒有先后順序输虱,那么它們的停止和啟動(dòng)就都是相互獨(dú)立的蚕钦,并且是并行的。 對(duì)于不同類型的單元來說,判斷啟動(dòng)是否已經(jīng)完成的標(biāo)準(zhǔn)并不完全相同。 特別的迹蛤,對(duì)于設(shè)置在 Before=/After= 中的服務(wù)單元來說陋桂, 只有在服務(wù)單元內(nèi)配置的所有啟動(dòng)命令全部都已經(jīng)被調(diào)用,并且對(duì)于每一個(gè)被調(diào)用的命令, 要么確認(rèn)已經(jīng)調(diào)用失敗鞍恢、要么確認(rèn)已經(jīng)成功運(yùn)行的情況下蟆炊, 才能認(rèn)為已經(jīng)完成啟動(dòng)肩祥。

OnFailure=
接受一個(gè)空格分隔的單元列表疾层。 當(dāng)該單元進(jìn)入失敗("failed")狀態(tài)時(shí)痛黎, 將會(huì)啟動(dòng)列表中的單元杀捻。

Service小節(jié)

Type=
設(shè)置進(jìn)程的啟動(dòng)類型垢袱, 必須設(shè)為 simple, forking, oneshot, dbus, notify, idle 之一涌韩。其中 forking 擎淤, 表示 ExecStart= 進(jìn)程將會(huì)在啟動(dòng)過程中使用 fork() 系統(tǒng)調(diào)用席吴。 這是傳統(tǒng)UNIX守護(hù)進(jìn)程的經(jīng)典做法量承。 也就是當(dāng)所有的通信渠道都已建好忧风、啟動(dòng)亦已成功之后, 父進(jìn)程將會(huì)退出,而子進(jìn)程將作為該服務(wù)的主進(jìn)程繼續(xù)運(yùn)行删壮。 對(duì)于此種進(jìn)程菱涤, 建議同時(shí)設(shè)置 PIDFile= 選項(xiàng)殷勘, 以幫助 systemd 準(zhǔn)確定位該服務(wù)的主進(jìn)程痒玩, 進(jìn)而加快后繼單元的啟動(dòng)速度炉菲。

ExecStart=
在啟動(dòng)該服務(wù)時(shí)需要執(zhí)行的命令行(命令+參數(shù))。
ExecReload=
這是一個(gè)可選的指令, 用于設(shè)置當(dāng)該服務(wù)被要求重新載入配置時(shí)所執(zhí)行的命令行换途。
ExecStop=
這是一個(gè)可選的指令, 用于設(shè)置當(dāng)該服務(wù)被要求停止時(shí)所執(zhí)行的命令行阁最。

過程

1、創(chuàng)建service文件

新建文件并保存

vim /usr/lib/systemd/system/jws.service

內(nèi)容如下

[Unit] 
Description=Jexus web service 
Documentation=http://www.jexus.org 
Wants=network-online.target 
After=network-online.target 
 
[Service] 
User=root 
Group=root 
Type=forking 
ExecStart=/usr/jexus/jws start 
ExecStop=/usr/jexus/jws stop 
ExecReload=/usr/jexus/jws restart 
 
[Install] 
WantedBy=multi-user.target

2、嘗試啟動(dòng)

systemctl start jws

查看狀態(tài)

● jws.service - Jexus web service
   Loaded: loaded (/usr/lib/systemd/system/jws.service; disabled)
   Active: active (running) since Tue 2018-07-24 12:36:56 CST; 9s ago
     Docs: http://www.jexus.org
  Process: 26123 ExecStart=/usr/jexus/jws start (code=exited, status=0/SUCCESS)
 Main PID: 26126 (JwsMain)
   CGroup: /system.slice/jws.service
           ├─26126 mono /usr/jexus/jws.exe
           ├─26141 jexus: log service jwsLog.exe
           ├─26149 jexus: httpd worker jwsHttpd.exe
           └─26156 jexus: asp state service jwsState.exe

Jul 24 12:36:56 DynamicSvc-DEV jws[26123]: Starting ... OK
Jul 24 12:36:56 DynamicSvc-DEV systemd[1]: Started Jexus web service.

設(shè)置開啟自啟

systemctl enable jws
Synchronizing state for jws.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d jws defaults
Executing /usr/sbin/update-rc.d jws enable
Created symlink from /etc/systemd/system/multi-user.target.wants/jws.service to /usr/lib/systemd/system/jws.service.

引用

systemd 中文手冊 譯者:金步國

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末实苞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纵竖,老刑警劉巖厕宗,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異轻专,居然都是意外死亡漫拭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苟穆,“玉大人,你說我怎么就攤上這事⊥障溃” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵骏令,是天一觀的道長审丘。 經(jīng)常有香客問我,道長桩警,這世上最難降的妖魔是什么川蒙? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任术瓮,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旱捧。我一直安慰自己氓癌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布避乏。 她就那樣靜靜地躺著,像睡著了一般甘桑。 火紅的嫁衣襯著肌膚如雪拍皮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天跑杭,我揣著相機(jī)與錄音铆帽,去河邊找鬼。 笑死德谅,一個(gè)胖子當(dāng)著我的面吹牛爹橱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窄做,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼愧驱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了椭盏?” 一聲冷哼從身側(cè)響起组砚,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掏颊,沒想到半個(gè)月后惫确,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年改化,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掩蛤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陈肛,死狀恐怖揍鸟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情句旱,我是刑警寧澤阳藻,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站谈撒,受9級(jí)特大地震影響腥泥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啃匿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一蛔外、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溯乒,春花似錦夹厌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至光稼,卻和暖如春或南,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艾君。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工迎献, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腻贰。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像扒秸,于是被迫代替她去往敵國和親播演。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理伴奥,服務(wù)發(fā)現(xiàn)写烤,斷路器,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • muahao閱讀 2,069評(píng)論 0 3
  • systemd攻略 轉(zhuǎn)自http://www.reibang.com/p/d5305104d03a或者這個(gè)http...
    x1596357閱讀 2,853評(píng)論 0 3
  • 最近在研究Docker的源碼.讀到ApiServer的啟動(dòng)過程時(shí),發(fā)現(xiàn)其有一個(gè)新的概念,叫做service act...
    AlstonWilliams閱讀 1,130評(píng)論 1 4
  • 工作的壓力越來越大拾徙,不知道是領(lǐng)導(dǎo)對(duì)我們的工作不滿洲炊,還是我們對(duì)工作沒有上進(jìn)心,每天空氣中都充滿了無數(shù)的抱怨聲,每個(gè)人...
    alisha123閱讀 193評(píng)論 0 0