開機(jī)自啟腳本

場景

電腦或服務(wù)器開機(jī)都會有一些需要啟動的程序咆爽,每次都需要一個一個點(diǎn)擊啟動球拦,耗時耗力,還有可能漏啟動续搀。所以添加一個開機(jī)自啟的腳本塞琼,腳本中幫我們打開需要啟動的程序,如Snipaste目代、FRP客戶端等屈梁。


CentOS

方式一:添加啟動命令到rc.local文件中

修改 /etc/rc.local 文件,添加啟動服務(wù)的命令
先寫好啟動腳本或者啟動命令榛了,事先保證啟動腳本或命令能正常啟動服務(wù)在讶,然后將腳本路徑或啟動命令添加至/etc/rc.local文件中,這個方法適合比較簡單的shell腳本霜大。

方式二:注冊服務(wù)并設(shè)置開機(jī)自啟

創(chuàng)建腳本myservice构哺,寫入

#!/bin/bash

# chkconfig: 234 10 90 
# description: myservice ...

case $1 in
"start")
date >> /tmp/test.txt
echo "service start" >> /tmp/test.txt
;;
"stop")
date >> /tmp/test.txt
echo "service stop" >> /tmp/test.txt
;;
esac

NOTE:其中2345是默認(rèn)啟動級別,級別有0-6共7個級別战坤。

  • 等級0表示:表示關(guān)機(jī)
  • 等級1表示:單用戶模式
  • 等級2表示:無網(wǎng)絡(luò)連接的多用戶命令行模式
  • 等級3表示:有網(wǎng)絡(luò)連接的多用戶命令行模式
  • 等級4表示:不可用
  • 等級5表示:帶圖形界面的多用戶模式
  • 等級6表示:重新啟動
  • 10是啟動優(yōu)先級曙强,90是停止優(yōu)先級,優(yōu)先級范圍是0-100途茫,數(shù)字越大碟嘴,優(yōu)先級越低。

將腳本放到/etc/init.d或/etc/rc.d/init.d目錄下囊卜,并添加腳本為服務(wù)

chkconfig --add myservice

NOTE:此時調(diào)用chkconfig --list myservice命令娜扇,得到如下啟動等級
myservice 0:off 1:off 2:on 3:on 4:on 5:on 6:off

輸入如下命令調(diào)用myservice服務(wù),然后查看/tmp下的test.txt文件發(fā)現(xiàn)已經(jīng)寫入了日期栅组。

systemctl start myservice

NOTE:對服務(wù)的操作就相當(dāng)于在調(diào)用對應(yīng)的腳本
service httpd 等價 /etc/rc.d/init.d/httpd
service httpd start 等價 /etc/rc.d/init.d/httpd start
service httpd stop 等價 /etc/rc.d/init.d/httpd stop
systemctl start myservice 等價 /etc/rc.d/init.d/myservice start

將myservice服務(wù)設(shè)置為開機(jī)自啟

systemctl enable myservice

NOTE:如果啟動等級是2345雀瓢,則已經(jīng)是開機(jī)自啟了,可以省略這步玉掸。

查看服務(wù)是否開機(jī)啟動

systemctl is-enabled myservice



重啟服務(wù)器刃麸,就會執(zhí)行systemctl start myservice命令和rc.local中的命令。

方式三

編輯腳本

[Unit]
Description=node_export
Documentation=https://github.com/prometheus/node_exporter
After=network.target
Wants=network.target

[Service]
Type=simple
User=hxr
ExecStart= /opt/module/node_exporter-1.2.2/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target

配置中多個相同配置會選擇最后一個司浪;所有的啟動設(shè)置之前泊业,都可以加上一個連詞號(-)把沼,表示"抑制錯誤",即發(fā)生錯誤的時候吁伺,不影響其他命令的執(zhí)行智政。EnvironmentFile=-/etc/sysconfig/sshd,表示即使 /etc/sysconfig/sshd 文件不存在箱蝠,也不會拋出錯誤
[Unit] 啟動順序與依賴關(guān)系:
Description:當(dāng)前服務(wù)的簡單描述;
Documentation:指定 man 文檔位置垦垂;
After:如果network.target 需要啟動宦搬,那么 sshd.service 應(yīng)該在它們之后啟動;
Before:定義 本服務(wù) 應(yīng)該在哪些服務(wù)之前啟動劫拗。After 和 Before 字段只涉及啟動順序间校,不涉及依賴關(guān)系;
Wants:表示 network.target 之間存在"弱依賴"關(guān)系页慷,即如果"network.target"啟動失敗或停止運(yùn)行憔足,不影響 本服務(wù) 繼續(xù)執(zhí)行;
Requires:表示"強(qiáng)依賴"關(guān)系酒繁,即如果該服務(wù)啟動失敗或異常退出滓彰,那么 本服務(wù) 也必須退出 。 Wants 字段與Requires 字段只涉及依賴關(guān)系州袒,與啟動順序無關(guān)揭绑,默認(rèn)情況下是同時啟動。

[Service] 啟動行為:
EnvironmentFile:許多軟件都有自己的環(huán)境參數(shù)文件郎哭,該字段指定文件路徑(注意:/etc/profile 或者 /etc/profile.d/ 這些文件中配置的環(huán)境變量僅對通過 pam 登錄的用戶生效他匪,而 systemd 是不讀這些配置的。systemd 是所有進(jìn)程的父進(jìn)程或祖先進(jìn)程夸研,它的環(huán)境變量會被所有的子進(jìn)程所繼承邦蜜,如果需要給 systemd 配置默認(rèn)參數(shù)可以在/etc/systemd/system.conf 和 /etc/systemd/user.conf 中設(shè)置。 加載優(yōu)先級system.conf 最低亥至,可能會被其他的覆蓋)悼沈;
Type:定義啟動類型√Т常可設(shè)置:simple井辆,exec,forking溶握,oneshot杯缺,dbus,notify睡榆,idle萍肆。
simple(設(shè)置了 ExecStart= 但未設(shè)置 BusName= 時的默認(rèn)值):ExecStart 字段啟動的進(jìn)程為該服務(wù)的主進(jìn)程
forking:ExecStart 字段的命令將以 fork() 方式啟動袍榆,此時父進(jìn)程將會退出,子進(jìn)程將成為主進(jìn)程塘揣。
ExecStart:定義啟動進(jìn)程時執(zhí)行的命令 上面的例子中包雀,啟動 sshd 執(zhí)行的命令是 /usr/sbin/sshd -D $OPTIONS,其中的變量 $OPTIONS 就來自 EnvironmentFile 字段指定的環(huán)境參數(shù)文件亲铡。
ExecReload:重啟服務(wù)時執(zhí)行的命令 ExecStop:停止服務(wù)時執(zhí)行的命令 才写;
ExecStartPre:啟動服務(wù)之前執(zhí)行的命令;
ExecStartPost:啟動服務(wù)之后執(zhí)行的命令 ExecStopPost:停止服務(wù)之后執(zhí)行的命令奖蔓;
RemainAfterExit:設(shè)為yes赞草,表示進(jìn)程退出以后,服務(wù)仍然保持執(zhí)行吆鹤;
KillMode:定義 Systemd 如何停止服務(wù)厨疙,可以設(shè)置的值如下:
control-group(默認(rèn)值):當(dāng)前控制組里面的所有子進(jìn)程,都會被殺掉 process:只殺主進(jìn)程 mixed:主進(jìn)程將收到 SIGTERM 信號疑务,子進(jìn)程收到 SIGKILL 信號 none:沒有進(jìn)程會被殺掉沾凄,只是執(zhí)行服務(wù)的 stop 命令;
Restart:定義了退出后知允,Systemd 的重啟方式撒蟀。可以設(shè)置的值如下: no(默認(rèn)值):退出后不會重啟
on-success:只有正常退出時(退出狀態(tài)碼為0)温鸽,才會重啟
on-failure:非正常退出時(退出狀態(tài)碼非0)牙肝,包括被信號終止和超時,才會重啟 on-abnormal:只有被信號終止和超時嗤朴,才會重啟
on-abort:只有在收到?jīng)]有捕捉到的信號終止時配椭,才會重啟 on-watchdog:超時退出,才會重啟
always:不管是什么退出原因雹姊,總是重啟股缸;
RestartSec:表示 Systemd 重啟服務(wù)之前,需要等待的秒數(shù)

[Install]啟動行為:
WantedBy:表示該服務(wù)所在的 Target(服務(wù)組) 吱雏。關(guān)于 Target敦姻,運(yùn)行級別結(jié)果為 multi-user.target,表示默認(rèn)的啟動 Target 是multi-user.target歧杏。在這個組里的所有服務(wù)镰惦,都將開機(jī)啟動。這就是為什么 systemctl enable
命令能設(shè)置開機(jī)啟動的原因犬绒。shutdown.target 就是關(guān)機(jī)狀態(tài)旺入。常用的 Target 有兩個:一個是 multi-user.target,表示多用戶命令行狀態(tài);另一個是 graphical.target茵瘾,表示圖形用戶狀態(tài)礼华,它依賴于 multi-user.target systemctl isolate shutdown.target。

根據(jù)實(shí)際情況修改Service中的User和ExecStart的屬性拗秘,然后將將本放到 /usr/lib/systemd/system/node_exporter.service 路徑下圣絮。

設(shè)為開機(jī)自啟動
systemctl enable node_exporter.service
會將文件路由到 /etc/systemd/system/multi-user.target.wants/ 目錄下

可以通過如下命令查看日志信息
journalctl -u node_exporter -n 10 -f


Windows

  1. 創(chuàng)建.bat腳本,輸入啟動命令
start /min C:\Users\Administrator\Desktop\frp_0.36.2_windows_amd64\frpc.exe -c C:\Users\Administrator\Desktop\frp_0.36.2_windows_amd64\frpc.ini
start E:\Snipaste\Snipaste.exe
start "" "C:\Program Files (x86)\iNode\iNode Client\iNode Client.exe"
  1. 將腳本放到系統(tǒng)啟動文件夾C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup中(或在運(yùn)行框中輸入shell:startup打開用戶啟動文件夾C:\Users\CJ\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)

NOTE:frpc.exe啟動時會打開cmd窗口雕旨,可以加上/min來最小化cmd窗口扮匠。


NOTE:Win中沒有l(wèi)inux中的nohup(忽略SIGHUP指令)和&(忽略SIGINT指令)命令來掛起程序使其在后臺運(yùn)行,如果希望其在后臺運(yùn)行凡涩,可以隱藏窗口餐禁。
網(wǎng)上找了以下兩種方式,但是都不管用╯﹏╰
方式一:

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
start /min >C:\Users\Administrator\Desktop\frp_0.36.2_windows_amd64\frpc.exe -c >C:\Users\Administrator\Desktop\frp_0.36.2_windows_amd64\frpc.ini
start E:\Snipaste\Snipaste.exe

方式二:
再寫一個vbs文件突照,在該文件中以隱藏的方式啟動bat腳本

Set ws = CreateObject("Wscript.Shell") 
ws.run "cmd /c start.bat",vbhide 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者氧吐。
  • 序言:七十年代末讹蘑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子筑舅,更是在濱河造成了極大的恐慌座慰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翠拣,死亡現(xiàn)場離奇詭異版仔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)误墓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蛮粮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谜慌,你說我怎么就攤上這事然想。” “怎么了欣范?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵变泄,是天一觀的道長。 經(jīng)常有香客問我恼琼,道長妨蛹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任晴竞,我火速辦了婚禮蛙卤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘噩死。我一直安慰自己表窘,他們只是感情好典予,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乐严,像睡著了一般瘤袖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上昂验,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天捂敌,我揣著相機(jī)與錄音,去河邊找鬼既琴。 笑死占婉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的甫恩。 我是一名探鬼主播逆济,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼磺箕!你這毒婦竟也來了奖慌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤松靡,失蹤者是張志新(化名)和其女友劉穎简僧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雕欺,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡岛马,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屠列。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啦逆。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖笛洛,靈堂內(nèi)的尸體忽然破棺而出蹦浦,到底是詐尸還是另有隱情,我是刑警寧澤撞蜂,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布盲镶,位于F島的核電站,受9級特大地震影響蝌诡,放射性物質(zhì)發(fā)生泄漏溉贿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一浦旱、第九天 我趴在偏房一處隱蔽的房頂上張望宇色。 院中可真熱鬧,春花似錦、人聲如沸宣蠕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抢蚀。三九已至镀层,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間皿曲,已是汗流浹背唱逢。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屋休,地道東北人坞古。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像劫樟,于是被迫代替她去往敵國和親痪枫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

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