讓程式在遠端主機後臺執行 (&、nohuo、 screen)Linux 使用技巧
作為一個系統運維人員,你是不是經常需要 SSH 或者 telent 遠端登入到 Linux 伺服器?
你是不是經常為一些長時間執行的任務而頭疼,比如系統備份、ftp 傳輸等等。通常情況下
我們都是為每一個這樣的任務開一個遠端終端視窗,因為他們執行的時間太長了。必須等待
它執行完畢,在此期間可不能關掉視窗或者斷開連線,否則這個任務就會被殺掉,一切半途
而廢了。
所以就上網找啊找,找到了一個從後臺一直執行某個程式的方法。
Unix/Linux下一般比如想讓某個程式在後臺執行,很多都是使用 & 在程式結尾來讓程式自動執行。
比如我們要執行mysql在後臺:
/usr/local/mysql/bin/mysqld_safe --user=mysql &
但是加入我們很多程式並不象mysqld一樣做成守護程序,可能我們的程式只是普通程式而已,一般這種程式使用 & 結尾,
但是如果終端關閉,那麼程式也會被關閉。但是為了能夠後臺執行,那麼我們就可以使用nohup這個命令,nohup就是不
掛起的意思( n ohang up)。比如我們有個test.php需要在後臺執行,並且希望在後臺能夠定期執行,那麼就使用nohup:
nohup /root/test.php &
值得注意的是nohup命令只是使得程式忽略SIGHUP訊號,還需要使用標記&把它放在後臺執行。
nohup <command> [argument…] &
雖然nohup很容易使用,但還是比較“簡陋”的,對於簡單的命令能夠應付過來,對於複雜的需要人機互動的任務就麻煩了。
其實我們可以使用一個更為強大的實用程式screen。
簡單來說,Screen是一個可以在多個程序之間多路複用一個物理終端的視窗管理器。Screen中有會話的概念,使用者可以在一
個screen會話中建立多個screen視窗,在每一個screen視窗中就像操作一個真實的telnet/SSH連線視窗那樣。在screen中建立
一個新的視窗有這樣幾種方式:
1.直接在命令列鍵入screen命令
# screen
Screen將建立一個執行shell的全屏視窗。你可以執行任意shell程式,就像在ssh視窗中那樣。在該視窗中鍵入exit退出該視窗,
如果這是該screen會話的唯一視窗,該screen會話退出,否則screen自動切換到前一個視窗。
2.Screen命令後跟你要執行的程式。
# screen vi test.c
Screen建立一個執行vi test.c的單視窗會話,退出vi將退出該視窗/會話。
3.以上兩種方式都建立新的screen會話。我們還可以在一個已有screen會話中建立新的視窗。在當前screen視窗中鍵入C-a c
,
即Ctrl鍵+a鍵,之後再按下c鍵,screen 在該會話內生成一個新的視窗並切換到該視窗。
screen還有更高階的功能。你可以不中斷screen視窗中程式的執行而暫時斷開(detach)screen會話,並在隨後時間重新連線(attach)
該會話,重新控制各視窗中執行的程式。例如,我們開啟一個screen視窗編輯/tmp/abc檔案:
# screen vi /tmp/abc
之後我們想暫時退出做點別的事情,比如出去散散步,那麼在screen視窗鍵入C-a d
,Screen會給出detached提示:
半個小時之後回來了,找到該screen會話:
[[email protected] ~]# screen -ls There is a screen on: 16582.pts-1.tivf06 (Detached) 1 Socket in /tmp/screens/S-root.
重新連線會話:
[[email protected] ~]# screen -r 16582
看看出現什麼了,太棒了,一切都在。繼續幹吧。
你可能注意到給screen傳送命令使用了特殊的鍵組合C-a。這是因為我們在鍵盤上鍵入的資訊是直接傳送給當前screen視窗,
必須用其他方式向screen視窗管理器發出命令,預設情況下,screen接收以C-a開始的命令。這種命令形式在screen中叫做鍵繫結
(key binding),C-a叫做命令字元(command character)。
可以通過C-a ?
來檢視所有的鍵繫結,常用的鍵繫結有:
C-a ? | 顯示所有鍵繫結資訊 |
---|---|
C-a w | 顯示所有視窗列表 |
C-a C-a | 切換到之前顯示的視窗 |
C-a c | 建立一個新的執行shell的視窗並切換到該視窗 |
C-a n | 切換到下一個視窗 |
C-a p | 切換到前一個視窗(與C-a n相對) |
C-a 0..9 | 切換到視窗0..9 |
C-a a | 傳送 C-a到當前視窗 |
C-a d | 暫時斷開screen會話 |
C-a k | 殺掉當前視窗 |
C-a [ | 進入拷貝/回滾模式 |
下例顯示當前有兩個處於detached狀態的screen會話,你可以使用screen -r <screen_pid>重新連線上:
[[email protected] root]# screen –ls
There are screens on:
8736.pts-1.tivf18 (Detached)
8462.pts-0.tivf18 (Detached)
2 Sockets in /root/.screen.
[[email protected] root]# screen –r 8736
如果由於某種原因其中一個會話死掉了(例如人為殺掉該會話),這時screen -list會顯示該會話為dead狀態。使用screen -wipe命令清除該會話:
[[email protected] root]# kill -9 8462
[[email protected] root]# screen -ls
There are screens on:
8736.pts-1.tivf18 (Detached)
8462.pts-0.tivf18 (Dead ???)
Remove dead screens with 'screen -wipe'.
2 Sockets in /root/.screen.
[[email protected] root]# screen -wipe
There are screens on:
8736.pts-1.tivf18 (Detached)
8462.pts-0.tivf18 (Removed)
1 socket wiped out.
1 Socket in /root/.screen.
[[email protected] root]# screen -ls
There is a screen on:
8736.pts-1.tivf18 (Detached)
1 Socket in /root/.screen.
[[email protected] root]#
Reference:
相關推薦
讓程式在遠端主機後臺執行 (&、nohuo、 screen)Linux 使用技巧
作為一個系統運維人員,你是不是經常需要 SSH 或者 telent 遠端登入到 Linux 伺服器? 你是不是經常為一些長時間執行的任務而頭疼,比如系統備份、ftp 傳輸等等。通常情況下 我們都是為每一個這樣的任務開一個遠端終端視窗,因為他們執行的時間太長了。必須等待
讓程式在遠端主機後臺執行 (&、nohuo、 screen)Linux 使用技巧
作為一個系統運維人員,你是不是經常需要 SSH 或者 telent 遠端登入到 Linux 伺服器? 你是不是經常為一些長時間執行的任務而頭疼,比如系統備份、ftp 傳輸等等。通常情況下 我們都是為每一個這樣的任務開一個遠端終端視窗,因為他們執行的時間太長了。必須等待 它執
linux下nohup命令——讓程式在遠端主機後臺執行
最近做的一個專案,需要登入到遠端主機進行執行除錯,採取的是talent遠端登入。進行了幾次實驗後發現當執行程式後關閉終端即關閉talent登入後程序有時候也會停止執行,這讓我很苦惱,本來想採取守護程序進行編寫程式,可是太麻煩,而且這樣時間上或許來不及了,所以上網查找了另
Linux前臺的程式轉到後臺執行(並且關閉終端而不殺死命令)
通過SSH或者終端putty連線到一臺linux/unix機器,執行一個程式、一個指令碼或者一條命令,但現在你需要關閉SSH或者終端,由於該該程式、指令碼或者命令正在執行,一旦你直接關閉而不做任何處理這個程序就會一起關閉,做到一半的工作浪費掉了 下面介紹一種方法可以在需要關閉
讓python在伺服器後臺執行(nohup)
網上有很多nohup的例子,SSH連線伺服器後,使用nohup python xxxxx.py &就可以有效實現。但是使用後發現並不管用,研究了很多天不知道如何解決。後來偶然發現使用完nohup後,千萬不能直接關閉SSH,要使用exit退出shell。再用外網訪問一下
使程式在Linux下後臺執行 (關掉終端繼續讓程式執行的方法)
一、為什麼要使程式在後臺執行 我們計算的程式都是週期很長的,通常要幾個小時甚至一個星期。我們用的環境是用putty遠端連線到日本Linux伺服器。所以使程式在後臺跑有以下三個好處: 1:我們這邊是否關機不影響日本那邊的程式執行。(不會像以前那樣,我們這網路一斷開,或一關機,程式就
Linux後臺執行的方法 - 關閉、退出不影響
所有 mat data ack job tid scree 快捷 -c 難免會遇到在Linux,後臺執行任務。下面,總結了一下關閉窗口任然在後臺執行的方法,例如 #執行一個打包命令 tar czf /data/backup.tgz /data/backu
轉載:隱藏bat視窗在後臺執行(找了好久)
https://mp.weixin.qq.com/s?__biz=MzU4MjY1ODA3Nw==&mid=2247484277&idx=1&sn=8b5d98aab3827b78f528fe4b2143d929&chksm=fdb5b207cac23b11fcea56618f
微信小程式表單輸入驗證(手機號、郵箱驗證、輸入非空)
wxml: <form bindsubmit='formSubmit'> <view class='form'> <text class='label'>姓名<text class='re
Linux環境下執行java -jar xxx.jar命令如何讓springboot專案在後臺執行
段落引用> 由於springboot內建了tomcat容器,我們通常會把專案打成jar或者war後直接使用java -jar xxx.jar命令去執行程式,但是當前ssh視窗被鎖定或者按下ctrl+c又或者關閉了ssh視窗,那麼程式就會被終止。如何讓程式在後臺保持執行不被關閉呢? 解決方法
領域驅動設計,讓程式設計師心中有碼(四)
#領域驅動設計,讓程式設計師心中有碼(四) ----------------------追憶有關分層的古老往事 我一直認為,程式設計師也是藝術家,他們撰寫的每一行程式碼,是獻給這大好世界的優美詩篇。不同的人,寫的程式碼也許風格迥
領域驅動設計,讓程式設計師心中有碼(六)
領域驅動設計-聚合,一種極簡的思維模式 引言 作為IT技術產業飛速發展的產物,軟體工程學已經成為當今時代非常重要的一個學科。作為一名資深的軟體開發從業者,我們需要學習的東西實際上已經遠遠超出了原本在大學教育階段所接受的知識深度和廣度,領域驅動設計更是如此。當然必須承認
前臺執行緒和後臺執行緒的區別、執行緒池的優缺點和使用場景
1.執行緒的和程序的關係以及優缺點 windows系統是一個多執行緒的作業系統。一個程式至少有一個程序,一個程序至少有一個執行緒。程序是執行緒的容器,一個C#客戶端程式開始於一個單獨的執行緒,CLR(公共語言執行庫)為該程序建立了一個執行緒,該執行緒稱為主執行緒。例如當我們建立一個C#控制檯
程式設計師必備工具推薦(技術社群、書籍、平臺工具等)
技術站點 Hacker News:非常棒的針對程式設計的連結聚合網站 Programming reddit:同上 MSDN:微軟相關的官方技術集中地,主要是文件類 infoq:企業級應用,關注軟體開發領域 OSChina:開源技術社群,開源方面做的不錯哦 c
windows 下redis在後臺執行(親測)
1. 進入 DOS視窗 2. 在進入redis的安裝目錄 3. 輸入:redis-server --service-install redis.windows.conf --loglevel verbose ( 安裝redis服務 ) 4. 輸入:redis-
李飛飛團隊CVPR論文:讓AI識別語義空間關係(附論文、實現程式碼)
本文經AI新媒體量子位(公眾號ID:qbitai )授權轉載,轉載請聯絡出處。本文共1000字,
Android應用程式的自動更新升級(自身升級、通過tomcat)
剛入手android一個多月,因公司需要提交技術文件,才寫了這個demo測試,想儲存下來,以備後用!有什麼不對的地方歡迎大家指正,這個示例也是參考了網上別人的demo自己做的。
程式的載入和執行(三)——《x86組合語言:從真實模式到保護模式》讀書筆記23
程式的載入和執行(三)——讀書筆記23 接著上次的內容說。 關於過程load_relocate_program的講解還沒有完,還差建立棧段描述符和重定位符號表。 1.分配棧空間與建立棧段描述符 462 ;建立程式堆疊段描述符 463
小程式開發 學習筆記-1 (邏輯層、檢視層)
1、小程式包含一個描述整體程式的 app 和多個描述各自頁面的 page。 2、頁面的.json只能設定 window 相關的配置項,以決定本頁面的視窗表現,所以無需寫 window 這個鍵 邏輯層(App Service) 1、小程式開發框架的邏
使程式以管理員許可權執行(C++)
來源網站:http://blog.csdn.net/jhui163/article/details/5873027 在看射手原始碼的時候,發現這個函式,是獲取管理員許可權的。但是不知道效果如果,先發上來大家測試下。 void GainAdminPrivileges(