導航:首頁 > 程序命令 > linux啟動程序命令

linux啟動程序命令

發布時間:2022-05-10 19:28:17

① 如何在linux命令行中執行應用程序

具體步驟如下:

1、首先我們在命令行運行程序需要藉助jdk的環境依賴,打開jdk包。

② linux 如何用命令行啟動程序

准確說,linux
不存在「用命令行登陸」的說法。
准確應該是從本地字元終端登陸。因為在登陸前,是沒有命令行的,命令行是一個用戶交互操作界面,在你還沒有登陸的時候,是不存在「命令行」的。
至於如何切換到本地字元終端,圖形狀態下用
ctrl
+
alt
+
f1

f6
即可,一般
linux
的設計都是
1-6
是字元終端,7
是圖形終端,部分發行版
f1
是字元終端,f2-f7
是字元終端。
你切換到這個終端里,就可以看到提示你輸入用戶名的提示了,輸入用戶名後回車就是輸入密碼。密碼無回顯,正確輸入後回車即可,別因為沒看到密碼哪一行按了鍵盤沒反應就覺得機器壞了。

③ Linux啟動httpd命令

Linux httpd命令是Apache HTTP伺服器程序。httpd為Apache HTTP伺服器程序。直接執行程序可啟動伺服器的服務。

1、apahce啟動命令:推薦/usr/local/apache2/bin/apachectl start apaceh啟動

2、apache停止命令:/usr/local/apache2/bin/apachectlstop 停止

3、apache重新啟動命令:/usr/local/apache2/bin/apachectl restart 重啟要在重啟 Apache 伺服器時不中斷當前的連接,則應運行:/usr/local/sbin/apachectl graceful

如果apache安裝成為linux的服務的話,可以用以下命令操作:service httpd start 啟動service httpd restart 重新啟動service httpd stop 停止服務

4.httpd是Apache超文本傳輸協議(HTTP)伺服器的主程序。被設計為一個獨立運行的後台進程,它會建立一個處理請求的子進程或線程的池。

通常,httpd不應該被直接調用,而應該在類Unix系統中由 apachectl 調用,在Windows NT/2000/XP/2003中作為服務運行和在Windows 95/98/ME中作為控制台程序運行。

(3)linux啟動程序命令擴展閱讀

linux與windows對比

1、 編程

雖然五年已經過去了,但是系統編程的模式基本沒有什麼改變,由於GPL的存在linux在編程效率上比windows要高不少,這是因為GPL公開程序代碼,這樣可以減少重復開發,所以linux在編程模式上比windows要略微強點。

但是須知windows還是常用軟體的主要載體,所以windows下的軟體還是要移植到windows下的,當然有很多軟體還是一直就在windows下開發的,所以這點windows並不比linux弱的太多。

值得一提的是windows8種引入的windows store,這樣的應用不知道可不可以在linux下開發,貌似目前windows8 app都是在windows8下開發的。

2、運行平台篇

linux系統可以運行在幾乎所有的硬體結構上,無論是intel、amd、arm處理器都可以,甚至我國的龍芯上跑的也是linux。而windows在更新到windows8後也實現了支持intel、amd和arm三大處理器架構。

但是相對而言,windows8 RT只能運行在特定的架構上並且不發售零售版,所以可以暫時不考慮。即linux比windows支持的處理器平台多。

linux下處理器性能能否達到windows的標准還很難說,因為電源管理等諸多問題,linux並不一定能發揮硬體的全部效率。這點在顯卡上體現的特別明顯。

AMD的顯卡開源驅動只能實現顯卡一半的性能,所以在運行平台上,linux兼容的更多,但是windows更完美,相對而言,只考慮運行平台的話(能用)linux略占優勢。

3、 硬體支持篇

linux的硬體支持除了顯卡外我感覺還是和windows保持同步的,比如usb3.0,HDMI等但在顯卡方面,尤其是雙顯卡方面linux就和windows差距明顯了,linux目前還沒有可靠的雙顯卡交火或者雙顯卡交互手段,所以就憑這一點linux在硬體支持方面占極大劣勢,

因為沒有雙顯卡支持會導致雙顯卡一直通電,能耗直線上升! 雖然linux的新內核早已解決了這個問題,但是linux下顯卡驅動的不足也導致這方面問題沒有根本解決。

4、網路篇

個人感覺除了google的chorme os外linux的網路已經發展的登峰造極了,linux對網路的利用率是非常高的,畢竟GPL的基本交流手段就是網路,所以網路功能上linux很給力的,至於ipv6什麼的windows和linux早就一樣哈皮了。

不過有一點就是flash player上的問題制約了linux網路媒體的應用,因為flash player在linux佔用的資源過高,導致性能下降……

5、 設備驅動篇

這個linux基本上什麼設備都能認出來,但是能驅動的設備顯然沒有windows多,畢竟除了arm處理器外基本上每個硬體都會為windows寫驅動,但是能為linux寫驅動的就不多了,很多linux驅動是用開源驅動的,這樣的話效率……

所以個人感覺windows的驅動比linux下強。

6、 UNIX能力篇

這個,我不太同意原作者設立這個指標的,畢竟linux是unix like系統,而windows和這個不沾邊……所以UNIX能力肯定是linux強啊,但是不是還有原版的unix么,所以這點應該列入評價指標。

7、性能篇

這個是很重要的一點,原作者分為開放性、多用戶和多任務三個方面來進行的對比。開放性其實linux和windows都一樣的,都很開放,不過windows8相比前輩們有點保守,所以linux的開放性應該更好點。

多用戶方面,linux和windows都支持多個用戶,但是linux可以多用戶同時登陸,不過考慮到個人電腦的情況,這個指標一般沒有什麼用。所任務,這點有很多測評,大家可以去網路或者google一下,一般大家都認為linux效率更高一點。

8、創新篇

我實際上很反對這種為了創新而創新的對比方式的。windows和linux都是操作系統,為了實現類似的功能,出現多多少少一些類似是正常的。

就開發狀態而言,linux是開源的,而windows不開源,所以linux應該高點,但是不要忘了windows系統也能得到全世界的很多第三方軟體的支持,所以創新性而言雙方並沒有可比性,因該是在同一水平。

9、病毒防護篇

這一點毫無疑問是linux獲勝,目前世界上還沒有一種可以在linux下大規模泛濫的病毒,而且linux的安全性完全是建立在其保守的內核設計上的,所以linux是很安全的。相對於windows雖然windows8在win7的基礎上又提高了很多,但是與linux還是有差距的。

實際上,為了保證用戶體驗,很多時候windows是必須犧牲防護性能的,所以能做到這點已經非常不容易了,真要超級安全的還FreeBSD是不是更安全呢?

10、穩定篇

系統穩定性上我感覺linux與windows不相上下,因為windows與linux都會崩潰,雖然windows崩潰原因很多,而linux崩潰大部分是有誤操作,但是二者的差距真心沒有那麼大,而且windows實際上出現藍屏代碼什麼的故障次數也已經比以前少多了。

④ Linux啟動進程的命令

linux啟動進程的命令可以用sh,python ,./文件名。
下面是有關進程的操作:
1.查進程
ps命令查找與進程相關的PID號:
ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
ps -A 顯示所有程序。
ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
ps -e 此參數的效果和指定"A"參數相同。
ps e 列出程序時,顯示每個程序所使用的環境變數。
ps f 用ASCII字元顯示樹狀結構,表達程序間的相互關系。
ps -H 顯示樹狀結構,表示程序間的相互關系。
ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
ps s 採用程序信號的格式顯示程序狀況。
ps S 列出程序時,包括已中斷的子程序資料。
ps -t<終端機編號> 指定終端機編號,並列出屬於該終端機的程序的狀況。
ps u 以用戶為主的格式來顯示程序狀況。
ps x 顯示所有程序,不以終端機來區分。

最常用的方法是ps aux,然後再通過管道使用grep命令過濾查找特定的進程,然後再對特定的進程進行操作。
ps aux | grep program_filter_word,ps -ef |grep tomcat

ps -ef|grep java|grep -v grep 顯示出所有的java進程,去處掉當前的grep進程。
2.殺進程
使用kill命令結束進程:kill xxx
常用:kill -9 324
Linux下還提供了一個killall命令,可以直接使用進程的名字而不是進程標識號,例如:# killall -9 NAME
1. 更改檔案擁有者
命令 : chown [-cfhvR] [--help] [--version] user[:group] file...
功能 : 更改文件或者文件夾的擁有者
參數格式 :
user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者群體(group)
-c : 若該檔案擁有者確實已經更改,才顯示其更改動作
-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息
-h : 只對於連結(link)進行變更,而非該 link 真正指向的檔案
-v : 顯示擁有者變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞回的方式逐個變更)

例如:chown -R oracle:oinstall /oracle/u01/app/oracle
更改目錄擁有者為oracle

2. 修改許可權
命令:chmod (change mode)
功能:改變文件的讀寫和執行許可權。有符號法和八進制數字法。
選項:(1)符號法:
命令格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename
u (user) 表示用戶本人。
g (group) 表示同組用戶。
o (oher) 表示其他用戶。
a (all) 表示所有用戶。
+ 用於給予指定用戶的許可許可權。
- 用於取消指定用戶的許可許可權。
= 將所許可的許可權賦給文件。
r (read) 讀許可,表示可以拷貝該文件或目錄的內容。
w (write) 寫許可,表示可以修改該文件或目錄的內容。
x (execute)執行許可,表示可以執行該文件或進入目錄。

(2)八進制數字法:
命令格式:chmod abc file
其中a,b,c各為一個八進制數字,分別表示User、Group、及Other的許可權。
4 (100) 表示可讀。
2 (010) 表示可寫。
1 (001) 表示可執行。
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=5。

例如:# chmod a+rx filename
讓所有用戶可以讀和執行文件filename。
# chmod go-rx filename
取消同組和其他用戶的讀和執行文件filename的許可權。
# chmod 741 filename
讓本人可讀寫執行、同組用戶可讀、其他用戶可執行文件filename。
# chmod -R 755 /home/oracle
遞歸更改目錄許可權,本人可讀寫執行、同組用戶可讀可執行、其他用戶可讀可執行

3. 修改文件日期
命令:touch
格式:touch filenae
功能:改變文件的日期,不對文件的內容做改動,若文件不存在則建立新文件。
例如:% touch file

4. 鏈接文件
命令:ln (link)
格式:ln [option] filename linkname
ln [option] directory pathname
功能:為文件或目錄建立一個鏈。其中,filename和directory是源文件名和
源目錄名;linkname和pathname分別表示與源文件或源目錄名相鏈接的
文件或目錄。
選項:-s 為文件或目錄建立符號鏈接。不加-s表示為文件或目錄建立硬鏈接
注釋:鏈接的目地在於,對一個文件或目錄賦予兩個以上的名字,使其可以出
現在不同的目錄中,既可以使文件或目錄共享,又可以節省磁碟空間。
例如:% ln -s filename linkname

5. 顯示日期
命令:date
例如:% date

6. 顯示日歷
命令:cal (calendar)
格式:cal [month] year
功能:顯示某年內指定的日歷
例如:% cal 1998

7. 顯示文件頭部
命令:head
格式:head [option] filename
功能:顯示文件的頭部
選項:預設 顯示文件的頭10行。
-i 顯示文件的開始 i行。
例如:% head filename

8. 顯示文件尾部
命令:tail
格式:tail [option] filename
功能:顯示文件的尾部
選項:預設 顯示文件的末10行。
-i 顯示文件最後 i行。
+i 從文件的第i行開始顯示。
例如:% tail filename

9. 顯示用戶標識
命令:id
格式:id [option] [user]
功能:顯示用戶標識及用戶所屬的所有組。
選項:-a 顯示用戶名、用戶標識及用戶所屬的所有組
注釋:
例如:% id username

10. 查看當前登錄的用戶
命令:users

11. 顯示都誰登錄到機器上
命令:who
格式:who
功能:顯示當前正在系統中的所有用戶名字,使用終端設備號,注冊時間。
例如:% who

12. 顯示當前終端上的用戶名
命令:whoami
格式:whoami
功能:顯示出當前終端上使用的用戶。
例如:% whoami

13. 尋找文件
命令:find
格式:find pathname [option] expression
功能:在所給的路經名下尋找符合表達式相匹配的文件。
選項:-name 表示文件名
-user 用戶名,選取該用戶所屬的文件
-size 按大小查找,以block為單位,一個block是512B
-mtime n 按最後一次修改時間查找,選取n天內被修改的文件
-perm 按許可權查找
-type 按文件類型查找
-atime 按最後一次訪問時間查找

例如:% find ./ -name '*abc*' -print

14. 搜索文件中匹配符
命令:grep
格式:grep [option] pattern filenames
功能:逐行搜索所指定的文件或標准輸入,並顯示匹配模式的每一行。
選項:-i 匹配時忽略大小寫
-v 找出模式失配的行

例如:% grep -i 'java*' ./test/run.sh

15. 統計文件字數
命令:wc [option] filename
功能:統計文件中的文件行數、字數和字元數。
選項:-l 統計文件的行數
-w 統計文件的單詞數
-c 統計文件的字元數
注釋:若預設文件名則指標准輸入
例如:% wc -c ./test/run.sh

⑤ linux命令行如何運行程序

要充分理解本文,必須具備Windows 環境下桌面應用程序的工作經驗,我認為讀者對如何使用 Linux 桌面有一個基本的了解。使用一個運行的 Linux 計算來機探討本文的概念和示例是很有幫助的。

有時候第一次在 Linux 上運行一個應用程序需要一點額外工作。有些應用程序,比如伺服器服務,可能無法安裝為服務,因此您需要從命令行啟動這些應用程序。對於啟動這些應用程序的用戶帳戶而言,需要在應用程序文件中設置執行許可標志 (x)。

Linux 在內核空間或用戶空間運行進程。用戶空間 是操作系統的區域,應用程序通常在此運行。簡單地說,每個用戶帳戶有其自己的用戶空間,應用程序在這個領域內運行。
默認情況下,只有 root 用戶有權訪問內核空間。root 用戶 是 Linux 中的超級用戶,相當於 Windows 中的管理員帳戶。在 root 用戶帳戶下運行應用程序可能會引起安全風險,是不可取的。
很多伺服器服務需要 root 許可權啟動服務。然而,服務啟動後,root 帳戶通常會將其移至服務帳戶。嚴格地說,Linux 中的服務帳戶 才是標準的用戶帳戶。主要區別是服務帳戶僅用於運行一個服務,而不是為任何實際登錄的用戶准備的。

您可以使用 chmod 命令在一個文件中設置執行許可權。在 Linux 中,umask 設置通常用來防止下載的文件被執行,也有充分的理由相信,因為它有助於維護 Linux 計算機的安全性。
大多數 Linux 發行版具有一個值為 022 的 umask 設置,這意味著,默認情況下一個新文件許可權設置為 644。許可權的數字表示形式採用讀 (4)、寫 (2)、執行 (1) 的格式。因此,默認許可權為 644 的應用程序下載意味著文件所有者有讀寫許可權,而組用戶和其他用戶只有讀許可權。
例如,為每個人賦予一個文件的執行許可權,使用 chmod a+x 命令。a 表示所有人,加號 (+) 表示添加,而 x 表示執行。同樣地,如果應用程序是一個伺服器服務,您應該確保只有授權帳戶才有權執行此服務。
如果一個應用程序能夠在標准用戶帳戶許可權下運行,但只有特定組中的用戶才需要使用它,您可以將該組所有者許可權設置為可執行,然後將這些用戶添加到該組中。
更具體地說,您可以在一個可執行文件中設置訪問控制列表 (ACL) 許可權,賦予特定用戶或組許可權來運行該應用程序。使用 setfacl 實用工具設置 ACL 許可權。
對於這些需要以 root 用戶啟動進程的應用程序,比如伺服器服務,您有幾個選擇。總結了允許用戶執行需要 root 許可權的伺服器服務的各種選項。

作為 root 用戶 不推薦用於伺服器服務。當用戶已經知道 root 密碼而且應用程序泄露不是首要關注問題時,可用於應用程序。
SetUID 由於安全問題,不推薦使用。SetUID 允許標准用戶以另一個用戶方式,比如 root 用戶,執行一個文件。
sudo 很常用,並且被認為是一個很好的實踐。sudo 授予一個用戶或組成員許可權以執行可能額外需要 root 許可權的文件。該用戶不需要知道 root 密碼。
帶有文件許可權的標准用戶帳戶 在一個文件上為用戶所有者、組所有者或其他人(所有人)設置執行許可權。這是授予那些不需要 root 許可權來執行應用程序的用戶的常用方法。
帶有 ACL 許可權的標准用戶帳戶 使用較少,但是如果您不想授予一個用戶 sudo 訪問或者更改文件的許可權,這也是一個可行的解決方案。在一個文件上使用 setfacl 命令,您可以授予一個特定用戶或用戶組執行該文件的權力。

在管理 Linux 伺服器時,從命令行運行應用程序是一項基本的任務。很多應用程序使用 shell 腳本(類似於 Windows 批處理文件 .bat)來啟動應用程序並執行其他任務,比如設置變數以及為其他用戶分配進程。例如,應用程序可能需要一個 Java™ Virtual Machine (JVM) 來執行。那樣的話,shell 腳本可以設置適當的環境變數,然後執行 Java 命令來運行 Java Archive (JAR) 或類文件。這同樣適用於使用 Perl、Python、甚至 C# 的應用程序。(當然,C# 編譯的應用程序可以在 Linux 上運行)
從命令行或者 shell 提示符執行應用程序的一個常用方法是使用 ./ 命令。如果您在 Linux 中使用句號 (.) 和正斜杠 (/),就意味著告訴環境您想要以可執行文件運行該文件。例如,運行一個名為 myapp 的可執行文件,您可以使用 ./myapp 命令。同樣地,您可以在文件名之前加上語言環境,比如:
sh php python perl java
但更多情況下,套裝應用程序使用 shell 腳本,以 #! 符號設置環境變數提供該語言的運行時可執行路徑,比如 #!/usr/bin/python。您也應該熟悉這種方法。
清單 1 使用 catalina.sh 默認腳本通過 ./ 方法啟動 Apache Tomcat 應用程序伺服器。然後,使用 sh 方法啟動伺服器。因為默認埠是 8080,標准用戶不需要對其進行特別修改就可以啟動該服務。

⑥ linux 命令行如何運行程序

  1. 把程序的絕對路徑或者相對路徑寫出來,軟體就會執行。

  2. 還可以設置環境變數。

  3. 如果是文件,可以設置執行許可權,然後./文件名來執行。

⑦ Linux如何啟動流程Linux啟動流程詳解

當用戶打開電源後,BIOS開機自檢,確定啟動設備,安裝啟動設備,啟動設備上面安裝的GRUB開始引導Linux,Linux首先先進行內核引導,通過跟切換,執行init程序,init程序確定啟動級別,根據啟動級別進行系統初始化和運行的服務,然後返回init啟動終端,用戶通過驗證成功登陸Shell,這就是一個從開機到登陸的啟動過程。

一、硬體引導啟動
當用戶打開電源後POST開始自檢,檢測硬體設備是否確實或者存在故障(是否影響正常開機),如果不影響正常開機,就把任務交給BIOS。BIOS通過搜索,安裝啟動確定啟動設備,啟動項為硬碟,BIOS去讀取硬碟的前512位元組到內存,找到BootLoader,確定GRUB

二、GRUB引導啟動內核
這一部分概況起來就是:GRUB程序載入執行並開始引導kernel程序

Boot Loader就是在操作系統內核運行之前運行的一小段程序。通過GRUB引導可以確定內核程序,因為引導扇區只有446位元組,GRUB只是一個小的程序安裝在裡面,真正使用的在MBR後面的扇區存放,我們想使用Bootloader GRUB功能必須讀取後面的文件,Bootloader GRUB功能程序的運行和載入配置選項分為三個階段

Stage1階段:
Stage1階段其實就是執行系統安裝時預先寫入到MBR的Bootloader中的程序。

Stage1階段的任務僅是將硬碟0柱面0磁軌2扇區的內容讀入內存並執行,它是Stage1.5階段或Stage2階段的入口,引導進入Stage1.5階段或Stage2階段。 在此Stage1階段,還沒有識別文件系統的能力。

Stage1.5階段:
stage1.5階段是stage1階段和stage2階段的中間橋梁。stage1.5階段具有識別啟動分區文件系統的能力,此後GRUB程序便有能力去訪問/boot分區下/grub目錄下的 stage2文件,並將stage2載入內存執行。

Stage2階段
Stage2階段執行時,首先會解析GRUB程序的配置文件grub.conf,並依配置文件決定是否顯示系統啟動菜單。然後載入內核鏡像到內存中,通過initrd程序建立RAMDisk內存虛擬根文件系統。此時控制權將轉交給內核程序。

三、內核引導啟動
這一部分主要是通過在內存中建立虛擬根文件系統實現相關設備的驅動並建立和切換到真正的根文件系統。

解壓內核鏡像載入到內存,以及initrd程序建立RAMDisk內存虛擬根文件系統後,內核開始驅動基本硬體,並調用虛擬根文件系統中的init程序載入驅動模塊初始化系統中各種設備的相關配置工作,其中包括CPU、I/O、存儲設備等。當所需的驅動程序載入完後,會根據grub.conf配置文件中「root=XXX」部分所指定的內容創建一個根設備,然後將根文件系統以只讀的方式掛載,並切換到真正的根文件系統上,同時調用系統進程的/sbin/init程序,進入系統初始化階段。

四、系統初始化
這一步是通過/sbin/init,init程序准備軟體運行壞境,啟動系統服務

通過/etc/inittab文件確定運行級別,然後去執行系統初始化腳本/etc/rc.sysinit,為用戶初始化用戶空間環境,在完成初始化後,根據運行級別,系統開始對應級別的目錄啟動服務,關閉那些不要的服務(裡面S99local -> ../rc.local)用戶自動服務啟動腳本

運行級別:為系統運行或維護等目的而設定;0-6:7個級別
0:關機
1:單用戶模式(root自動登錄), single, 維護模式
2: 多用戶模式,啟動網路功能,但不會啟動NFS;維護模式
3:多用戶模式,正常模式;文本界面
4:預留級別;可同3級別
5:多用戶模式,正常模式;圖形界面
6:重啟
默認級別:3, 5
切換級別:init #
查看級別:runlevel ; who -r
五、啟動終端,用戶登錄
這一步是用戶登錄shell過程

如果沒有改變級別,默認情況執行/sbin/mingetty打開6個純文本終端,讓用戶輸入用戶名和密碼。輸入完成後,再調用login程序,核對密碼。如果密碼正確,就從文件 /etc/passwd 讀取該用戶指定的shell,然後啟動這個shell。更多Linux介紹請查看《Linux就該這么學》。

⑧ linux 怎麼打開應用程序

1、點擊電腦左下角,點擊左下角上的設置。

⑨ linux打開程序用什麼命令

gedit
&
後面加個
&
表示後台運行,就不影響當前終端繼續輸入命令了。

⑩ 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 &

閱讀全文

與linux啟動程序命令相關的資料

熱點內容
javascript源碼輔助閱讀 瀏覽:384
pythonui開發工具 瀏覽:595
adr指標源碼 瀏覽:217
程序員轉架構管理 瀏覽:958
企業伺服器為什麼不能被拷貝 瀏覽:119
用c編程實現txt搜索 瀏覽:854
JAVA小數隨機數 瀏覽:336
app加拿大pc怎麼操控的 瀏覽:698
光影app蘋果怎麼下載不了 瀏覽:971
php會員注冊代碼 瀏覽:511
csgo如何用128tick伺服器 瀏覽:571
百度網度怎麼解壓 瀏覽:946
windowsopencv源碼 瀏覽:945
origin平滑演算法 瀏覽:875
unity程序員簡歷 瀏覽:63
單片機ifelse 瀏覽:696
如何理解php面向對象 瀏覽:96
macword轉pdf 瀏覽:848
python列表求交集 瀏覽:874
解壓包如何轉音頻 瀏覽:447