如ZLG的EasyArm-280A學習班的Linux系統中/etc/rc.d/init.d/start_userapp文件是開機自動啟動的腳本文件,需要開機自動執行的命令或者應用程序,都可以在這里添加。
但你要注意,如果程序是阻塞程序要開機自啟動,一定要在命令後加上&以示後台執行。否則很可能會始終佔用串口終端,造成其他程序無法運行。
❷ linux下通過腳本實現自動重啟程序
自動重啟故障相信大家都遇到過,原因也有很多,跟系統,硬體或者外界因素都有關,但是在Linux中可沒有那麼簡單。這里集中討論linux實現自動重啟程序的方法。下面一起看看!
自動重啟腳本
假定需要實現重啟的程序名為 test ,我們這里通過判斷進程數目來判斷程序是否正常。
ps -ef | grep "$1" | grep -v "grep" | wc –l 是獲取$1(本例中為test)的進程數,腳本根據進程數來決定下一步的操作。通過一個死循環,每隔1秒檢查一次系統中的指定程序的進程數。
代碼如下:
腳本check
#!/bin/sh
#-----------------------------------# 函數: CheckProcess# 功能: 檢查一個進程是否存在# 參數: $1 --- 要檢查的進程名稱# 返回: 如果存在返回0, 否則返回1.#---------------------------------------CheckProcess(){ # 檢查輸入的參數是否有效 if [ "$1" = "" ]; then return 1 fi #$PROCESS_NUM獲取指定進程名的數目,為1返回0,表示正常,不為1返回1,表示有錯誤,需要重新啟動 PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l` if [ $PROCESS_NUM -eq 1 ]; then return 0 else return 1 fi}
# 檢查test實例是否已經存在while [ 1 ] ; do CheckProcess "test" CheckQQ_RET=$? if [ $CheckQQ_RET -eq 1 ]; then# 殺死所有test進程,可換任意你需要執行的操作 killall -9 test exec ./test & fi sleep 1done
腳本start:
加入limit corempsize 102400,設置core file的大小,一旦程序Core Dump,有跡可尋。在該腳本中後台執行check腳本,可以省去很多麻煩,
#!/bin/cshlimit corempsize 102400
./check &
補充:電腦總是自動重啟怎麼辦
1、右擊“我的電腦”,選擇“屬性”項。
2、在打開的系統屬性窗口中選擇“高級系統設置”項進入。
3、在打開的“系統屬性”窗口中,切換至“高級”選擇卡,然後點擊“系統和故障恢復 設置”按鈕。
4、在打開的窗口中取消勾選“自動重啟啟動”項並按確認即可。
5、當電腦在使用的過程中產生藍屏時,我們就可以進入“系統日誌”管理器中查看產生系統失敗的根源啦。打開“運行”對話框,輸入命令“eventvwr.msc”即可查看日誌信息,從中定位系統產生失敗的原因。
6、當然,我們也可以通過禁用某些開機項來嘗試修復系統。打開“運行”對話框,輸入命令“msconfig”進入“系統配置實用程序”界面,勾選“常規”選項卡下的“診斷啟動”選項。
7、還有一種修復計算機藍屏或重啟故障的方法,就是在電腦啟動時按“F8”進入系統故障菜單,從中選擇“安全模式”進入或“最後一次正確的配置”項進入系統,將及有可能修復系統。
8、當然,如果以上方法均不能解決問題,那麼建議您還是重新安裝一下系統,畢竟安裝系統所耗費的時間相對修復所用時間要少許多。一勞永逸之事才是王道。
相關閱讀:電腦自動重啟方法
方法一:
1、打開控制面板-管理工具-計劃任務程序
2、創建基本任務,名稱欄目,輸入“定時重啟”,下一步;
3、在窗口裡,有每天、每周、每月、一次各種選擇,這里小誠選擇一次,這次執行完就失效,您可以根據自己的情況進行選擇哈,點擊下一步;
4、設置重啟的日期、時間點,下一步;
5、選擇啟動程序,下一步;
6、在打開頁面里,點擊瀏覽,找到C;WindowsSystem32Shutdown.exe,點擊打開;
7、在添加參數欄目里輸入“-r”(重啟),進行下一步
8、點擊完成,即可實現自動重啟了
方法二:
❸ 如何在 Linux 啟動時自動執行命令或腳本
Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。有用戶想要在Linux啟動時候自動執行命令腳本,應該怎麼設置呢?這篇文章主要介紹了詳解如何在 Linux 啟動時自動執行命令或腳本,主要有兩種方式,具有一定的參考價值,感興趣的小夥伴們可以參考一下。
方法步驟
在啟動時執行 Linux 腳本
有兩種傳統的方法可以實現在啟動時執行命令或腳本:
方法 #1 - 使用 cron 任務
除了常用格式(分 / 時 / 日 / 月 / 周)外,cron 調度器還支持 @reboot 指令。這個指令後面的參數是腳本(啟動時要執行的那個腳本)的絕對路徑。
然而,這種方法需要注意兩點:
a) cron 守護進程必須處於運行狀態(通常情況下都會運行),同時
b) 腳本或 crontab 文件必須包含需要的環境變數(如果有的話,參考 StackOverflow 獲取更多詳細內容)。
方法 #2 - 使用 /etc/rc.d/rc.local
這個方法對於 systemd-based 發行版 Linux 同樣有效。不過,使用這個方法,需要授予 /etc/rc.d/rc.local 文件執行許可權:
# chmod +x /etc/rc.d/rc.local
然後在這個文件底部添加腳本。
下圖說明如何分別使用 cron 任務和 rc.local 運行兩個示例腳本(/home/gacanepa/script1.sh 和 /home/gacanepa/script2.sh)。
script1.sh:
#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
script2.sh:
#!/bin/bash
SITE="Tecmint.com"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt
*啟動時執行 Linux 腳本 *
記住,一定要提前給兩個示例腳本授予執行許可權:
$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh
在登錄或注銷時執行 Linux 腳本
要在登錄或注銷時執行腳本,分別需要使用 ~.bash_profile 和 ~.bash_logout 文件。多數情況下,後者需要手動創建。在每個文件的底部,添加調用腳本代碼,如前面例中所示,就可以實現這個功能。
補充:Linux基本命令
1.ls命令:
格式::ls [選項] [目錄或文件]
功能:對於目錄,列出該目錄下的所有子目錄與文件;對於文件,列出文件名以及其他信息。
常用選項:
-a :列出目錄下的所有文件,包括以 . 開頭的隱含文件。
-d :將目錄像文件一樣顯示,而不是顯示其他文件。
-i :輸出文件的i節點的索引信息。
-k :以k位元組的形式表示文件的大小。
-l :列出文件的詳細信息。
-n :用數字的UID,GID代替名稱。
-F : 在每個文件名後面附上一個字元以說明該文件的類型,“*”表示可執行的普通文 件;“/”表示目錄;“@”表示符號鏈接;“l”表示FIFOS;“=”表示套接字。
2.cd命令
格式:cd [目錄名稱]
常用選項:
cd .. 返回上一級目錄。
cd ../.. 將當前目錄向上移動兩級。
cd - 返回最近訪問目錄。
3.pwd命令
格式: pwd
功能:顯示出當前工作目錄的絕對路徑。
相關閱讀:Linux主要特性
完全兼容POSIX1.0標准
這使得可以在Linux下通過相應的模擬器運行常見的DOS、Windows的程序。這為用戶從Windows轉到Linux奠定了基礎。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程序是否能正常運行,這一點就消除了他們的疑慮。
多用戶、多任務
Linux支持多用戶,各個用戶對於自己的文件設備有自己特殊的權利,保證了各用戶之間互不影響。多任務則是現在電腦最主要的一個特點,Linux可以使多個程序同時並獨立地運行。
良好的界面
Linux同時具有字元界面和圖形界面。在字元界面用戶可以通過鍵盤輸入相應的指令來進行操作。它同時也提供了類似Windows圖形界面的X-Window系統,用戶可以使用滑鼠對其進行操作。在X-Window環境中就和在Windows中相似,可以說是一個Linux版的Windows。
支持多種平台
❹ 如何在Linux桌面環境下自動啟動程序
我在本教程中將介紹如何在各種桌面環境下,自動啟動某個程序。
GNOME桌面環境
在終端中運行這個命令,啟動"Startup Applications Preferences"(啟動應用程序首選項)GUI。
$ gnome-session-properties
點擊"Add"(添加)按鈕,即可配置一個新的啟動應用程序。分別往"Name"(名稱)欄和"Command"(命令)欄裡面鍵入該應用程序的名稱和該應用程序的CLI命令。往"Comment"(注釋)欄裡面鍵入可選的描述。
Unity桌面環境
在Unity Dash中鍵入"startup"(啟動)。一旦"Startup Application"(啟動應用程序)圖標出現,就點擊該圖標。
一旦"Startup Applications Preferences"(啟動應用程序首選項)窗口打開,輸入"Name"(名稱)、"Command"(命令)和"Comment"(注釋),即可配置自動啟動的某個程序。
KDE桌面環境
首先,打開"System Settings"(系統設置)窗口。你會在System Administration(系統管理)下面找到"Startup and Shutdown"(啟動和關閉)圖標。點擊該圖標。
系統會要求你從一系列已知的應用程序中選擇自動啟動的某個應用程序。如果你的程序沒有列出來,在上面空白區輸入該應用程序的名稱。如果該程序(比如CLI命令)將在終端中運行,就要選中"Run in terminal"(終端中運行)復選框。點擊"OK"(確定)按鈕。
下一步,系統要求你輸入該應用程序的詳細信息,包括名稱、命令和描述。
之後,你會看到該程序已完成配置,可自動運行。想配置額外的啟動程序/腳本,你可以點擊右邊側邊欄中的"Add Program"(添加程序)按鈕或"Add Script"(添加腳本)按鈕。
MATE桌面環境
在MATE桌面上,依次進入到"Applications"(應用程序)-> "Preferences(首選項)-> "Startup Applications"(啟動應用程序)。
你會看到"Startup Applications Preferences"(啟動應用程序首選項)窗口。點擊"Add"(添加)按鈕。
輸入啟動應用程序的詳細信息:"Name"(名稱)、"Command"(命令)和"Comment"(注釋)。
Xfce桌面環境
從Xfce桌面菜單中選擇"Settings Manager"(設置管理器)。在"Settings"(設置)窗口中,點擊"Session and Startup"(會話和啟動)圖標。
在"Application Autostart"(應用程序自動啟動)選項卡下,點擊底部的"Add"(添加)按鈕。
輸入自動啟動的某個程序的詳細信息:"Name"(名稱)、"Command"(命令)和"Description"(描述)。
LXDE桌面環境
想在LXDE桌面環境下配置啟動應用程序,只需在終端中運行下面幾個命令。
$ mkdir -p ~/.config/lxsession/Lubuntu/ $ touch ~/.config/lxsession/Lubuntu/autostart $ leafpad autostart
然後,把下面這一項添加到已創建的自動啟動文件中:
@conky
這里,"conky"是登錄後,我想自動運行的那個CLI命令的名稱。
保存並關閉。
❺ Linux系統如何將某一程序設置為開機自啟動,linux 小白求詳細講解......
Linux開機啟動程序詳解
我們假設大家已經熟悉其它操作系統的引導過程,了解硬體的自檢引導步驟,就只從Linux操作系統的引導載入程序(對個人電腦而言通常是LILO)開始,介紹Linux開機引導的步驟。
載入內核
LILO啟動之後,如果你選擇了Linux作為准備引導的操作系統,第一個被載入的東西就是內核。請記住此時的計算機內存中還不存在任何操作系統,PC(因為它們天然的設計缺陷)也還沒有辦法存取機器上全部的內存。因此,內核就必須完整地載入到可用RAM的第一個兆位元組之內。為了實現這個目的,內核是被壓縮了的。這個文件的頭部包含著必要的代碼,先設置CPU進入安全模式(以此解除內存限制),再對內核的剩餘部分進行解壓縮。
執行內核
內核在內存中解壓縮之後,就可以開始運行了。此時的內核只知道它本身內建的各種功能,也就是說被編譯為模塊的內核部分還不能使用。最基本的是,內核必須有足夠的代碼設置自己的虛擬內存子系統和根文件系統(通常就是ext2文件系統)。一旦內核啟動運行,對硬體的檢測就會決定需要對哪些設備驅動程序進行初始化。從這里開始,內核就能夠掛裝根文件系統(這個過程類似於Windows識別並存取C盤的過程)。內核掛裝了根文件系統之後,將啟動並運行一個叫做init的程序。
注意:在這里我們故意略去了Linux內核啟動的許多細節,這些細節只有內核開發人員才感興趣。如果你好奇的話,可以訪問http://www.redhat.com:8080地址處的"Kernel Hackers Guide"。
init進程
init進程是非內核進程中第一個被啟動運行的,因此它的進程編號PID的值總是1。init讀它的配置文件/etc/inittab,決定需要啟動的運行級別(Runlevel)。從根本上說,運行級別規定了整個系統的行為,每個級別(分別由0到6的整數表示)滿足特定的目的。如果定義了initdefault級別,這個值就直接被選中,否則需要由用戶輸入一個代表運行級別的數值。
輸入代表運行級別的數字之後,init根據/etc/inittab文件中的定義執行一個命令腳本程序。預設的運行級別取決於安裝階段對登錄程序的選擇:是使用基於文本的,還是使用基於X-Window的登錄程序。
rc命令腳本程序我們已經知道,當運行級別發生改變時,將由/etc/inittab文件定義需要運行哪一個命令腳本程序。這些命令腳本程序負責啟動或者停止該運行級別特定的各種服務。由於需要管理的服務數量很多,因此需要使用rc命令腳本程序。其中,最主要的一個是/etc/rc.d/rc,它負責為每一個運行級別按照正確的順序調用相應的命令腳本程序。我們可以想像,這樣一個命令腳本程序很容易變得難以控制!為了防止這類事件的發生,需要使用精心設計的方案。
對每一個運行級別來說,在/etc/rc.d子目錄中都有一個對應的下級目錄。這些運行級別的下級子目錄的命名方法是rcX.d,其中的X就是代表運行級別的數字。比如說,運行級別3的全部命令腳本程序都保存在/etc/rc.d/rc3.d子目錄中。在各個運行級別的子目錄中,都建立有到/etc/rc.d/init.d子目錄中命令腳本程序的符號鏈接,但是,這些符號鏈接並不使用命令腳本程序在/etc/rc.d/init.d子目錄中原來的名字。如果命令腳本程序是用來啟動一個服務的,其符號鏈接的名字就以字母S打頭;如果命令腳本程序是用來關閉一個服務的,其符號鏈接的名字就以字母K打頭。
許多情況下,這些命令腳本程序的執行順序都很重要。如果沒有先配置網路介面,就沒有辦法使用DNS服務解析主機名!為了安排它們的執行順序,在字母S或者K的後面緊跟著一個兩位數字,數值小的在數值大的前面執行。比如:/etc/rc.d/rc3.d/S50inet就會在/etc/rc.d/rc3.d/S55named之前執行(S50inet配置網路設置,55named啟動DNS伺服器)。存放在/etc/rc.d/init.d子目錄中的、被符號鏈接上的命令腳本程序是真正的實幹家,是它們完成了啟動或者停止各種服務的操作過程。當/etc/rc.d/rc運行通過每個特定的運行級別子目錄的時候,它會根據數字的順序依次調用各個命令腳本程序執行。它先運行以字母K打頭的命令腳本程序,然後再運行以字母S打頭的命令腳本程序。對以字母K打頭的命令腳本程序來說,會傳遞Stop參數;類似地對以字母S打頭的命令腳本程序來說,會傳遞Start參數。編寫自己的rc命令腳本在維護Linux系統運轉的日子裡,肯定會遇到需要系統管理員對開機或者關機命令腳
本進行修改的情況。
有兩種方法可以用來實現修改的目的:
●如果所做的修改只在引導開機的時候起作用,並且改動不大的話,可以考慮簡單地編輯一下/etc/rc.d/rc.local腳本。這個命令腳本程序是在引導過程的最後一步被執行的。
●如果所做的修改比較細致,或者還要求關閉進程使之明確地停止運行,則需要在/etc/rc.d/init.d子目錄中添加一個命令腳本程序。這個命令腳本程序必須可以接受Start和Stop參數並完成相應的操作。
第一種方法,編輯/etc/rc.d/rc.local腳本,當然是兩種方法中比較簡單的。如果想在這個命令腳本程序中添加內容,只需要使用喜歡的編輯器程序打開它,再把打算執行的命令附加到文件的末尾就可以了。這對一兩行的修改來說的確很便利。
如果確實需要使用一個命令腳本程序,這時必須選擇第二個方法。編寫一個rc命令腳本程序的過程並不像想像中那麼困難。我們下面就給出一個例子,看看它是怎樣實現的(順便說一句,你可以把我們的例子當作範本,按照自己的需要進行修改和添加)。
假設你打算每隔60分鍾調用一個特殊的程序來彈出一條消息,提醒自己需要從鍵盤前面離開休息一會兒,命令腳本程序將包括下面幾個部分:
●關於這個命令腳本程序功能的說明(這樣就不會在一年之後忘記它);
●在試圖運行它之前驗證這個命令腳本程序確實存在;
●接受start和stop參數並執行要求的動作。
參數給定後,我們就可以編寫命令的腳本程序。這個程序很簡單,大家可以自己編寫一下,我在這里就不給出了。
編寫好新的命令腳本程序之後,再從相關的運行級別子目錄中加上必要的符號鏈接,來控制這個命令腳本程序的啟動或者停止。在我的印象中,只想讓它在運行級別3或者運行級別5中啟動,原因是我認為只有這兩個運行級別才是日常工作的地方。最後,希望這個命令腳本程序在進入運行級別6(重啟動)的時候被關閉。
激活或者禁止服務項目有的時候會發現,在引導的時候並不需要某個特定的服務被啟動。如果你正在考慮使用Linux替換Windows NT的文件和列印伺服器,就更是如此。我們已經知道,在特定的運行級別子目錄中給符號鏈接改個名稱,就可以讓該服務不被啟動,如把其名稱的第一個字母由S改為K。一旦熟練掌握了命令行和符號鏈接,就會發現這是激活或者禁止服務的最快辦法。
在學習這個改名方法的時候,可能會覺得圖形化的操作界面ksysv比較容易掌握。雖然它原來是設計使用在KDE環境里的,但在Red HatLinux 7.2下預設安裝的GNOME環境里也運行得很好。如果想啟動它,只需簡單地打開一個xterm窗口,並輸入ksysv命令就可以了。屏幕上會出現一個窗口,其中列出了能夠修改的全部參數,需要時還包括在線幫助。警告:如果是在一個現實中的系統上學習本文的知識,要多多運用常識。當試著對啟動腳本程序進行修改的時候,要記住所做的修改可能會造成你的系統不能正常工作,而且無法採用重啟動的方法恢復。不要在正常運轉的系統上實驗新的設置,對你准備修改的文件要全部進行備份。最重要的是,在手邊要准備一張引導盤以防不測。
❻ linux 怎樣添加開機自動啟動程序
這是一個最簡復單的方法,編輯「制/etc/rc.local」,把啟動程序的shell命令輸入進去即可(要輸入命令的全路徑),類似於windows下的「啟動」。
使用命令 vi /etc/rc.local
然後在文件最後一行添加要執行程序的全路徑。
例如,每次開機時要執行一個haha.sh,這個腳本放在/opt下面,那就可以在「/etc/rc.local」中加一行「/opt/./haha.sh」,或者兩行「cd /opt」和「./haha.sh」。
二、crontab(類似於windows的任務計劃服務)
通過crontab可以設定程序的執行時間表,例如讓程序在每天的8點,或者每個星期一的10點執行一次。
crontab -l 列出時間表;
crontab -e編輯時間表;
crontab -d刪除時間表;
「-l」沒什麼可說的,就是一個查看而已;
「-e」是編輯,和vi沒什麼差別(其實就是用vi編輯一個特定文件);
「-d」基本不用,因為它把該用戶所有的時間表都刪除了,一般都是用「-e」編輯把不要了的時間表逐行刪除;
❼ 如何使Linux系統上的程序開機後自動運行
閱讀之前建議先看一下附圖。本文中假設inittab中設置的init tree為:/etc/rc.d/rc0.d /etc/rc.d/rc1.d /etc/rc.d/rc2.d /etc/rc.d/rc3.d /etc/rc.d/rc4.d /etc/rc.d/rc5.d /etc/rc.d/rc6.d /etc/rc.d/init.d1. 關於Linux的段穗啟動init是所有進程之父 init讀取/etc/inittab,執行rc.sysinit腳本 (注意文件名是不一定的,有些unix甚至會將語句直接寫在inittab中) rc.sysinit腳本作了很多工作: init $PATH config network start swap function set hostname check root file system, repair if needed check root space ....rc.sysinit根據inittab執行rc?.d腳本 Linux是多用戶系統,getty是多用戶與單用戶的分水嶺 在getty之前運行的是系統腳本2. 關於rc.d所有啟動腳本放置在 /etc/rc.d/init.d下 rc? number決定執行的順序3. 啟動腳本示例這是一個用來啟動httpd的 /etc/rc.d/init.d/握悄卜apache 腳本: 代碼: #!/bin/bash source /etc/sysconfig/rc source $rc_functions case "" in start) echo "Starting Apache daemon..." /usr/local/apache2/bin/apachectl -k start evaluate_retval ;; stop) echo "Stopping Apache daemon..." /usr/local/apache2/bin/apachectl -k stop evaluate_retval ;; restart) echo "Restarting Apache daemon..." /usr/local/apache2/bin/apachectl -k restart evaluate_retval ;; status) statusproc /usr/local/apache2/bin/httpd ;; *) echo "Usage: " exit 1 ;;esac可以看出他接受start,stop,restart,status參運缺數
❽ linux開機啟動腳本
需要自己寫一個腳本
腳本內容是
一個死循環,裡麵包含查詢進程的命令ps,讓後grep出你的進程
如果發現你的進程就認為啟動成功,沒發現就一直等待。
腳本例子,監控mysql
s_port=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`
if [ "$s_port" == "3306" ]; then
echo " mysql is running [`date '+%F %T'`]"
echo $s_logfie
else
echo " mysql is down try start [`date '+%F %T'`]" > $s_logfie_err
$s_mysqldir/share/mysql/mysql.server restart --user=root
sleep 10
s_port=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`
if [ "$s_port" == "3306" ];then
echo " mysql start ok [`date '+%F %T'`]"
else
echo " mysql start fail [`date '+%F %T'`]"
fi
fi
把這個腳本用crontab間隔一定時間調用一次,比如5分鍾,就ok了