添加開機啟動linux
添加開機啟動腳本的方法:
可以利用 systemd 的啟動原理,通過 /etc/systemd/system/rc-local.service 文件來達到啟動時執行 /etc/rc.local 文件的目的。不僅僅是ubuntu 18.04有這個問題。
debian 9也會碰到,方法使用。沒有/etc/rc.local文件,熟悉的開機自動啟動的設置就配置好了。
Linux,全稱GNU/Linux,是一種免費使用和自由傳播的類UNIX操作系統,其內核由林納斯·本納第克特·托瓦茲於1991年10月5日首次發布,它主要受到Minix和Unix思想的啟發,是一個基於POSIX的多用戶、多任務、支持多線程和多CPU的操作系統。
它能運行主要的Unix工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。
Linux有上百種不同的發行版,如基於社區開發的debian、archlinux,和基於商業開發的Red Hat Enterprise Linux、SUSE、Oracle Linux等。
2021年6月,根據Linux 5.14剛剛進入合並隊列的char-misc-next提交,Linux 5.14正式移除了RAW驅動。
發展歷史:
Linux操作系統的誕生、發展和成長過程始終依賴著五個重要支柱:Unix操作系統、MINIX操作系統、GNU計劃、POSIX標准和Internet網路。
B. Linux:怎麼設置服務開機自動啟動
linux設置開機服務自動啟動/關閉自動啟動命令
[root@localhost
~]#
chkconfig
--list
顯示開機可以自動啟動的服務
[root@localhost
~]#
chkconfig
--add
***
添加開機自動啟動***服務
[root@localhost
~]#
chkconfig
--del
***
刪除開機自動啟動...
C. linux怎麼讓程序開機自動啟動
1. 開機啟動時自動運行程序
Linux載入後, 它將初始化硬體和設備驅動, 然後運行第一個進程init。init根據配置文件繼續引導過程,啟動其它進程。通常情況下,修改放置在
/etc/rc或
/etc/rc.d 或
/etc/rc?.d
目錄下的腳本文件,可以使init自動啟動其它程序。例如:編輯/etc/rc.d/rc.local 文件(該文件通常是系統最後啟動的腳本),在文件最末加上一行「xinit」或「startx」,可以在開機啟動後直接進入X-Window。
2. 登錄時自動運行程序
用戶登錄時,bash先自動執行系統管理員建立的全局登錄script :
/ect/profile
然後bash在用戶起始目錄下按順序查找三個特殊文件中的一個:
/.bash_profile、
/.bash_login、
/.profile,
但只執行最先找到的一個。因此,只需根據實際需要在上述文件中加入命令就可以實現用戶登錄時自動運行某些程序(類似於DOS下的Autoexec.bat)。
D. 如何添加linux啟動項。
LINUX里的添加啟動項的方法和WINDOWS不一樣
使用chkconfig命令可以查看在不同啟動級別下課自動啟動的服務(或是程序),命令格式如下:
chkconfig
--list
可能輸出如下:
openvpn 0:關閉 1:開啟 ...... 6:關閉 (0-6 為啟動級別 ;
關閉/開啟為相應級別下該服務的自動啟動選項)
如果希望對自動啟動選項做出改變,命令格式為:
chkconfig --level x name
on/off
z.B. chkconfig --level 5 openvpn
off
以上的命令可以查詢系統可提供的服務,如果希望開機時啟動某一程序,可採用以下方法:
在~/.bash_profile文件最後一行添加所希望啟動的軟體名。如:「synergyc
192.168.0.154」
則在開機時自動運行synergyc並與192.168.0.154連接。
以上內容為我個人配置,但是發現了一個問題:FC12在登陸後才完成系統啟動,也就是說在進入用戶登陸界面的時候synergyc還未能啟動。所以,(也許)synergyc不適合被安裝在用作無鍵鼠客戶機的linux系統中。
在Red
Hat Linux中自動運行程序
1.開機啟動時自動運行程序
Linux載入後, 它將初始化硬體和設備驅動,
然後運行第一個進程init。init根據配置文件繼續引導過程,啟動其它進程。通常情況下,修改放置在 /etc/rc或 /etc/rc.d 或
/etc/rc?.d 目錄下的腳本文件,可以使init自動啟動其它程序。例如:編輯 /etc/rc.d/rc.local
文件,在文件最末加上一行"xinit"或"startx",可以在開機啟動後直接進入X-Window。
2.登錄時自動運行程序
用戶登錄時,bash首先自動執行系統管理員建立的全局登錄script
:/etc/profile。然後bash在用戶起始目錄下按順序查找三個特殊文件中的一個:/.bash_profile、/.bash_login、
/.profile,但只執行最先找到的一個。
因此,只需根據實際需要在上述文件中加入命令就可以實現用戶登錄時自動運行某些程序(類似於DOS下的Autoexec.bat)。
3.退出登錄時自動運行程序
退出登錄時,bash自動執行個人的退出登錄腳本/.bash_logout。例如,在/.bash_logout中加入命令"tar
-cvzf c.source.tgz *.c",則在每次退出登錄時自動執行 "tar" 命令備份 *.c
文件。
4.定期自動運行程序
Linux有一個稱為crond的守護程序,主要功能是周期性地檢查
/var/spool/cron目錄下的一組命令文件的內容,並在設定的時間執行這些文件中的命令。用戶可以通過crontab
命令來建立、修改、刪除這些命令文件。
例如,建立文件crondFile,內容為"00 9 23 Jan *
HappyBirthday",運行"crontab
cronFile"命令後,每當元月23日上午9:00系統自動執行"HappyBirthday"的程序("*"表示不管當天是星期幾)。
5.定時自動運行程序一次
定時執行命令at
與crond 類似(但它只執行一次):命令在給定的時間執行,但不自動重復。at命令的一般格式為:at [ -f file ] time
,在指定的時間執行file文件中所給出的所有命令。也可直接從鍵盤輸入命令:
代碼如下:
$ at 12:00
at>mailto Roger -s ″Have a
lunch″ < plan.txt
at>Ctr-D
Job 1 at 2000-11-09 12:00
2000-11-09
12:00時候自動發一標題為"Have a
lunch",內容為plan.txt文件內容的郵件給Roger。
#!/bin/bash
RESTART="........"
#裡面寫相應服務代碼
START="......."
STOP=".........."
case "$1"
in
restart)
$RESTART
echo "......"
;;
start)
$START
echo
"......"
;;
STOP)
$STOP
echo "......"
;;
*)
echo "Usage: $0
{restart ¦ start ¦ stop}"
exit 1
esac
exit 1
腳本寫完要修改一下許可權
chmod u+x
test.sh
首先,linux隨機啟動的服務程序都在/etc/init.d這個文件夾里,裡面的文件全部都是腳本文件(腳本程序簡單的說就是把要運行的程序寫到一個文件里讓系統能夠按順序執行,類似windows下的autorun.dat文件),另外在/etc這個文件夾里還有諸如名為rc1.d,
rc2.d一直到rc6.d的文件夾,這些都是linux不同的runlevel,我們一般進入的X
windows多用戶的運行級別是第5級,也就是rc5.d,在這個文件夾下的腳本文件就是運行第5級時要隨機啟動的服務程序。需要注意的是,在每個rc
(1-6).d文件夾下的文件其實都是/etc/init.d文件夾下的文件的一個軟連接(類似windows中的快捷方式),也就是說,在
/etc/init.d文件夾下是全部的服務程序,而每個rc(1-6).d只鏈接它自己啟動需要的相應的服務程序!
要啟動scim(某一程序),我們首先要知道scim程序在哪裡,用locate命令可以找到,scim在/usr/bin/scim這里,其中usr表示是屬於用戶的,bin在linux里表示可以執行的程序。這樣,我就可以編寫一個腳本程序,把它放到/etc/init.d里,然後在rc5.d里做一個相應的軟鏈接就可以了。
這個腳本其實很簡單,就兩行:
#!/bin/bash
/usr/bin/scim
第一行是聲明用什麼終端運行這個腳本,第二行就是要運行的命令。
還需要注意的一點是,在rc5.d里,每個鏈接的名字都是以S或者K開頭的,S開頭的表示是系統啟動是要隨機啟動的,K開頭的是不隨機啟動的。這樣,你就可以知道,如果我要哪個服務隨機啟動,就把它名字第一個字母K改成S就可以了,當然,把S改成K後,這個服務就不能隨機啟動了。因此,我這個鏈接還要起名為SXXX,這樣系統才能讓它隨機啟動
添加自啟動腳本
首先把自己的腳本放到/etc/init.d中,,然後執行如下指令:
update-rc.d
a start 90 2 3 4 5 . stop 90 0 1 6 .
其中a就是你的腳本,注意有兩個點。
a腳本範例。
代碼如下:
#!/bin/sh
# Source function
library.
if [ -f /etc/init.d/functions ]; then
.
/etc/init.d/functions
else
.
/lib/lsb/init-functions
fi
MOD=/a.ko
start()
{
echo -n $"insert a
kernel mole: "
/sbin/insmod $MOD
echo
}
stop()
{
echo -n
$"remove a kernel mole: "
/sbin/rmmod a -f
echo
}
[ -f $MOD ] ||
exit 0
# See how we were called.
case "$1"
in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo
$"Usage: $0
{start|stop|restart|reload}"
update-rc.d命令,是用來自動的升級System
V類型初始化腳本,簡單的講就是,哪些東西是你想要系統在引導初始化的時候運行的,哪些是希望在關機或重啟時停止的,可以用它來幫你設置。這些腳本的連接位於/etc/rcn.d/LnName,對應腳本位於/etc/init.d/Script-name.
1、設置指定啟動順序、指定運行級別的啟動項:
update-rc.d
<service> start <order> <runlevels>
2、設置在指定運行級中,按指定順序停止:
update-rc.d
<service> stop <order> <runlevels>
3、從所有的運行級別中刪除指定的啟動項:
update-rc.d -f
<script-name> remove
例如:
update-rc.d script-name start 90 1 2 3 4 5 . stop
52 0 6 .
start 90 1 2 3 4 5 . :
表示在1、2、3、4、5這五個運行級別中,按先後順序,由小到大,第90個開始運行這個腳本。
stop 52 0 6 .
:表示在0、6這兩個運行級別中,按照先後順序,由小到大,第52個停止這個腳本的運行。
如果在 /etc/init.d 中加入一個
script,還須要製作相關的 link
在 /etc/rc*.d 中。K 開頭是 kill , S 開頭是 start ,
數字順序代表啟動的順序。(SysV)
update-rc.d 可以幫你的忙。
例:
在 /etc/init.d 中建立一個叫作 zope 的
script , 然後
update-rc.d zope defaults
就會產生以下鏈結::
代碼如下:
Adding system startup for /etc/init.d/zope
...
/etc/rc0.d/K20zope -> ../init.d/zope
/etc/rc1.d/K20zope ->
../init.d/zope
/etc/rc6.d/K20zope -> ../init.d/zope
/etc/rc2.d/S20zope
-> ../init.d/zope
/etc/rc3.d/S20zope ->
../init.d/zope
/etc/rc4.d/S20zope -> ../init.d/zope
/etc/rc5.d/S20zope
-> ../init.d/zope
其他進階使用方式請 man update-rc.d
E. 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」編輯把不要了的時間表逐行刪除;
F. 怎樣將一個linux服務設置成開機啟動
linux設置開機服務自動啟動
[root@localhost ~]# chkconfig --list 顯示開機可以自動啟動的服務
[root@localhost ~]# chkconfig --add *** 添加開機自動啟動***服務
[root@localhost ~]# chkconfig --del *** 刪除開機自動啟動***服務
www.2cto.com
[root@localhost ~]# setup 可以在shell圖形終端裡面配置的命令,去service里選擇
[root@localhost ~]# ntsysv 在shell終端圖形配置開機啟動服務命令,選項沒上面那個多
setup 、rc.local 和chkconfig三種方式都可以設置
第一種)
輸入#setup指令進入系統服務菜單,選擇你想啟動的服務比如httpd,然後重起機器或者/etc/rc.d./init.d/httpd
start
www.2cto.com
第二種)
把啟動命令放到/etc/rc.d/rc.local文件里這樣就可以每次啟動的時候自動啟動服務了,例如對於apache,編譯好apache後會在安裝目錄的bin下生成apachectl文件,這是個啟動腳本,我們只需要把這個命令加到rc.local里就可以了
(suse沒有rc.local。SUSE是可以這么定義自己的腳本的,如果希望在切換運行級之前和之後運行自己的腳本,那麼可以分別創建:
/etc/init.d/before.local
/etc/init.d/after.local)
echo /usr/local/apache/bin/apachectl>> /etc/rc.d/rc.local,
設置服務自動啟動的方式是在rc.local里還可以加入類似以下的一些腳本:
#sshd
/usr/local/sbin/sshd
#proftpd
/usr/local/sbin/proftpd
#apache
/home/apache/bin/apachectl start
#mysql
/home/mysql/bin/safe_mysqld --port=3306 &
#start oracle8i listener first
su - oracle -c 'lsnrctl start'
#start oracle8i
su - oracle -c 'dbstart'
第三種)
通過chkconfig指令.
使用chkconfig命令來把某項服務加到系統的各項運行級別中,步驟如下,
1 創建啟動腳本.
對於apache,mysql,ssh這樣的軟體都是自己帶的,我們只要稍微修改一下使之支持chkconfig就可以了
2 修改腳本
我們需要在腳本的前面加上一下2行,才能支持chkconfig命令
# chkconfig: 2345 08 92
#
# description: Automates a packet filtering firewall withipchains.
#
chkconfig:後面定義的使啟動服務的運行級別(例子中使2345啟動改服務),以及關閉和啟動服務的順序,(上例中關閉服務的順序使8,啟動的順序使92)
descriptions:對改服務的描述(上例中是ipchains包過濾),你可以換成自己想要的
修改好之後執行
cp 你的腳本 /etc/rc.d/init.d/腳本名
chmod 700 /etc/rc.d/init.d/腳本名
chkconfig --add 腳本名
例如:
將其加入Linux啟動過程,僅在level 3, level 5級別下運行
[root@Tester init.d]/sbin/chkconfig --add apache-httpd
[root@Tester init.d]/sbin/chkconfig --level 35 apache-httpdon
之後就可以了,以後每次重新啟動伺服器都會自動啟動和關閉我們的服務了
需要解決更多linux問題,詳情請看 http://www.linuxprobe.com/chapter-00.html
望採納!
G. linux 怎麼把服務設置開機啟動
如果是已經安裝好的服務,需要使用chkconfig設置開機啟動。以MySQL為例,因各發行版不同,以及安裝方式的差異,伺服器的啟動腳本可能會有細微不同,現假設服務腳本文件是/etc/init.d/mysqld。
首先查看服務是否正確注冊
$ service --status-all | grep mysqld | grep -v 'grep'如果有含有mysqld文字的一行返回,則代表已正確注冊;若沒有需執行如下命令:
$ sudo chkconfig add mysqld
第二步設置開機自啟動
$ sudo chkconfig mysqld on
附:查看所有服務及其運行級別的命令
$ chkconfig --list
H. linux設開機自啟動服務
linux設開機自啟動服務
1.
把啟動命令放到/etc/rc.local中,
編輯:/etc/rc.local文件
如下:可以添加直接服務啟動,也可以添加SHELL腳本
bash
/etc/init.d/webstart
start
bash
/etc/init.d/redis
以上運行的程序都是以root許可權來執行的。如果某些程序要以某個用戶的身份去運行,那麼可以這樣:
su
show
-c
/home/show/server/tomcat/bin/startup.sh
2.
chkconfig命令
[root@localhost
~]#
chkconfig
--list
顯示開機可以自動啟動的服務
[root@localhost
~]#
chkconfig
--add
***
添加開機自動啟動***服務
[root@localhost
~]#
chkconfig
--del
***
刪除開機自動啟動***服務
I. linux如何設置程序開機啟動後台運行
有些時候,我們需要在終端啟動一個程序,並使之運行——但是如果關閉終端,那麼這個程序也就隨著關閉了。那麼有沒有什麼方法在關閉終端後,讓已經從這個終端啟動的程序繼續運行呢?有以下方法
1.讓linux忽略終端的hung up 信號,不關閉進程;
2.讓此進程變為終端的非子進程。
方法一:
在終端輸入命令:
# ./pso > pso.file 2>&1 &
解釋:將pso直接放在後台運行,並把終端輸出存放在當前目錄下的pso.file文件中。
當客戶端關機後重新登陸伺服器後,直接查看pso.file文件就可看執行結果(命
令:#cat pso.file )。
或者 在終端輸入命令:
# nohup ./pso > pso.file 2>&1 &
解釋:nohup就是不掛起的意思,將pso直接放在後台運行,並把終端輸出存放在當前
目錄下的pso.file文件中。當客戶端關機後重新登陸伺服器後,直接查看pso.file
文件就可看執行結果(命令:#cat pso.file )。
方法二:
實現方案就是nohup命令。
例如要啟動jboss,可以nohup ./run.sh &。這樣就可以了,結尾的「&」符號表示後台啟動jboss,從而不影響繼續運行其他命令。
但這樣有一個問題,nohup命令雖然可以讓linux「放過」這個進程,但是nohup會同時把進程的控制台輸出重定向到nohup.txt下(默認是這個文件),當然可以重定向為其他的文件,但是輸出總會有的。
如果jboss運行很長時間,而且如果有很多控制台輸出的話,nohup.txt文件就會變的很大很大。
通常項目中的日誌都會輸出到特定的日誌文件或者輸出到 資料庫 中,也就是說控制台的輸出對於程序的意義不大,那麼可不可以拋棄掉這些輸出呢?答案是肯定的。
這里講解一下linux的重定向(注意,是linux的重定向,不是針對nohup)。
0、1和2分別表示標准輸入、標准輸出和標准錯誤信息輸出,可以用來指定需要重定向的標准輸入或輸出。
在一般使用時,默認的是標准輸出,既1.當我們需要特殊用途時,可以使用其他標號。例如,將某個程序的錯誤信息輸出到log文件中:./program 2>log。這樣標准輸出還是在屏幕上,但是錯誤信息會輸出到log文件中。
另外,也可以實現0,1,2之間的重定向。2>&1:將錯誤信息重定向到標准輸出。
Linux下還有一個特殊的文件/dev/null,它就像一個無底洞,所有重定向到它的信息都會消失得無影無蹤。
結合nohup,我們可以這樣 nohup ./run.sh >/dev/null &
這是最簡單的一種方式,既保證了程序能夠一直後台執行,又能保證不會產生太大的nohup.txt文件。
方法三:
利用的linux的一個機制,讓程序在subshell中執行,方法很簡單,將命令用括弧() 括起來即可。
ps -ef | grep test
可以看到run.sh的父進程為1,不是當前終端了,這樣就能忽略hung up信號。
當然linux還可以動態的讓程序後台運行或不被hung up 信號關閉,例如disown命令,setid命令等。
方法四:
如果是使用Ubuntu的話,你可以利用CTRL+ALT+T組合鍵打開終端。當然你也可以使用超級鍵(Windows鍵)打開Dash,搜索「TERM」,然後點擊「Term」圖標來打開終端窗口。
對於其他的桌面環境來說,例如XFCE、KDE、LXDE、Cinnamon以及MATE,你可以在菜單中找到終端。有些環境會在停靠欄或者面板上麵包含終端圖標。
通常情況下,你可以在終端裡面直接輸入應用程序名來啟動一個應用程序。比如說,你可以通過輸入「firefox」來啟動Firefox。
在終端啟動應用程序的好處是,你可以包含一些額外的參數。
例如,你可以通過下列命令來打開一個Firefox瀏覽窗口,然後利用默認的搜索引擎搜索相關信息:
firefox -search "linux.cn"
你可能會注意到,如果你啟動Firefox,程序打開以後,回到了終端窗口控制,這就意味著你可以繼續在終端進行工作。
通常情況下,如果你在終端啟動了應用程序,控制會切換到新啟動的應用程序,只有程序被關閉以後才會重新切換到終端控制。這是因為你在前台啟動了這個程序。
如果要在Linux終端打開應用程序並且返回終端控制,那麼你需要將應用程序啟動為後台進程。
和下面所列的命令一樣,我們可以通過增加一個(&)符號,將應用程序在後台啟動。
libreoffice &
譯者註:如果需要加參數的話,記得把&符號放在最後。
譯者註:一般情況下,關閉終端時,在這個終端啟動的後台程序也會被終止,要使終端關閉以後,後台程序依然保持執行可以使用下列命令
nohup command [arg...] &
如果應用程序目錄沒有安裝在PATH變數包含的目錄裡面的話,我們就沒有辦法直接通過應用程序名來啟動程序,必須輸入應用程序的整個路徑來啟動它。
/path/to/yourprogram &
如果你不確定程序輸入哪個Linux目錄結構的話,可以使用find或者location命令來定位它。
可以輸入下列符號來找到一個文件:
find /path/to/start/from -name programname
例如,你可以輸入下列命令來找到Firefox:
find / -name firefox
命令運行的結果會嗖的一下輸出一大堆,別擔心,你也可以通過less或者more來進行分頁查看。
find / -name firefox | more find / -name firefox | less
當find命令查找到沒有許可權訪問的文件夾時,會報出一條拒絕訪問錯誤,
你可以通過sudo命令來提示許可權。當然,如果你沒有安裝sudo的話,就只能切換到一個擁有許可權的用戶了。
sudo find / -name firefox | more
如果你知道你要查找的文件在你的當前目錄結構中,那麼你可以使用點來代替斜杠:
sudo find . -name firefox | more
你可能需要sudo來提升許可權,也可能根本就不需要,如果這個文件在你的主目錄裡面,那麼就不需要使用sudo。
有些應用程序則必須要提升許可權才能運行,否則你就會得到一大堆拒絕訪問錯誤,除非你使用一個具有許可權的用戶或者使用sudo提升許可權。
這里有個小竅門。如果你運行了一個程序,但是它需要提升許可權來操作,輸入下面命令試試:
sudo !!
方法五:
在Unix/Linux下如果想讓程序獨立終端運行,一般都是使用 & 在命令結尾來讓程序自動運行。(命令後可以不追加空格)
打開gnome-terminal,執行如下命令:
delectate@delectate:~$ totem &[1] 8510delectate@delectate:~$ 有幾點需要注意:
已經啟動的程序依然attach於當前pts,只有當前終端模擬器關閉(使用exit命令退出),進程自動被tty繼承。delectate@delectate:~$ ps -e | grep totem //程序已被以totem & 形式啟動,當前附在pts0上8819 pts/0 00:00:00 totemdelectate@delectate:~$ ps -e | grep totem //pts0的模擬終端被exit命令關閉,totem自動附在tty8819 ? 00:00:00 totemdelectate@delectate:~$
具有debug輸出的進程,需要按enter鍵進行中斷當前debug輸出。但是如果程序持續進行printf,你將無法輸入任何命令。delectate@delectate:~$ vlc &[1] 8850delectate@delectate:~$ VLC media player 1.0.6 Goldeneye[0x8b998b0] main libvlc: Running vlc with the default interface. Use 『cvlc』 to use vlc without interface. //enter presseddelectate@delectate:~$ //show a clean terminal now** (:8850): CRITICAL **: giop_thread_request_push: assertion `tdata != NULL』 failed //仍然在輸出數據…… //關閉程序[1]+ Done vlcdelectate@delectate:~$
你無法記錄程序的debug輸出結果。
只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續輸出信息而沒有出現 $ 或 #)
使用nohup命令:
nohup描述:Run COMMAND, ignoring hangup signals.(忽略任何中斷/掛起信號,使命令繼續執行)
但是當你嘗試使用命令:
1nohup command
時候卻會遇到不大不小的麻煩……
delectate@delectate:~$ nohup vlcnohup: ignoring input and appending output to `nohup.out』
是的,雖然它自動把debug信息記錄到nohup.out文件,但是你卻無法使用這個終端進行任何操作。
所以你需要和第一個方法混用,即
nohupcommand {option}&
混用後,它會自動把你執行的命令輸出結果記錄到許可權為-rw——-,名為nohup.out的文件中。
但是你仍然需要
delectate@delectate:~$ nohup vlc &[1] 9045delectate@delectate:~$ nohup: ignoring input and appending output to `nohup.out』 //在這里按一下回車或以ctrl+c以 //show a clean terminal delectate@delectate:~$
與使用 「&」 性質相同,當前啟動程序的終端如果沒有被關閉,已經啟動的程序附在pst上;如果終端被關閉,則自動附在tty。
如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out。默認狀態下,nohup默認輸出到nohup.out文件,你也可以利用重定向來指定輸出文件:
nohupcommand {option} > myout.file 2>&1 &
只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續輸出信息而沒有出現 $ 或 #)
其他相關命令:
jobs:查看當前有多少在後台運行的命令
fg:將後台中的命令調至前台繼續運行。如果後台中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)
bg:將一個在後台暫停的命令,變成繼續執行。如果後台中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)
殺死進程
殺死已經啟動的程序和普通方式一樣:
pkill -9 name
killall name
kill pid
…
命令應用:
linux伺服器掛機下載;啟動相關服務;linux伺服器啟動進程(尤其是ssh登錄)
我就曾經用 1nohup aria2c -i downloadlist -m 0 -j 1 &