1. 程式人生 > >shell下的作業管理

shell下的作業管理

作業管理:同時進行多個作業(如檢視檔案,搜尋檔案)

1、直接將命令放到背景中執行,使用&,如:

 vi jmeter.log &
2、將【目前】工作丟到背景中【暫停】:[ctrl]-z
vi ~/.bashrc     # 在 vi 的一般模式下,按下 [ctrl]-z 這兩個按鍵
[1]+  Stopped                 vim ~/.bashrc
在 vi 的一般模式下,按下 [ctrl] 及 z 這兩個按鍵,螢幕上會出現 [1] ,表示這是第一個工作, 而那個 + 代表最近一個被丟進背景的工作,且目前在背景下預設會被取用的那個工作,Stopped 則代表目前這個工作的狀態。在預設的情況下,使用 [ctrl]-z 丟到背景當中的工作都是『暫停』的狀態。

3、觀察目前的背景工作狀態:jobs

jobs [-lrs]
選項與引數:
-l  :除了列出 job number 與命令串之外,同時列出 PID 的號碼;
-r  :僅列出正在背景 run 的工作;
-s  :僅列出正在背景當中暫停 (stop) 的工作。
+ 代表最近被放到背景的工作號碼, - 代表最近最後第二個被放置到背景中的工作號碼。 而超過最後第三個以後的工作,就不會有 +/- 符號存在了!

4、將背景工作拿到前景來處理:fg

fg %jobnumber
選項與引數:%jobnumber :jobnumber 為工作號碼(數字)。注意,那個 % 是可有可無的!
fg      <==預設取出那個 + 的工作
5、讓工作在背景下的狀態變成執行中:bg
[email protected]:# jobs ; bg %3 ; jobs
[1]-  已停止               vi npm-debug.log
[2]   已停止               find / -print
[3]+  已停止               vi jmeter.log
[3]+ vi jmeter.log &
[1]+  已停止               vi npm-debug.log
[2]   已停止               find / -print
[3]-  執行中               vi jmeter.log &

[3]+  已停止               vi jmeter.log
狀態列以經由 Stopping 變成了 Running ! 命令列最後方多了一個 & 的符號! 代表該工作被啟動在背景當中了。

6、管理背景當中的工作:kill

[[email protected] ~]# kill -signal %jobnumber
[[email protected] ~]# kill -l
選項與引數:
-l  :這個是 L 的小寫,列出目前 kill 能夠使用的訊號 (signal) 有哪些?
signal :代表給予後面接的那個工作什麼樣的指示羅!用 man 7 signal 可知:
  -1 :重新讀取一次引數的配置檔 (類似 reload);
  -2 :代表與由鍵盤輸入 [ctrl]-c 同樣的動作;
  -9 :立刻強制刪除一個工作;
  -15:以正常的程式方式終止一項工作。與 -9 是不一樣的。
範例一:找出目前的 bash 環境下的背景工作,並將該工作『強制刪除』。
[[email protected] ~]# jobs
[1]+  Stopped                 vim ~/.bashrc
[2]   Stopped                 find / -print
[[email protected] ~]# kill -9 %2; jobs
[1]+  Stopped                 vim ~/.bashrc
[2]   Killed                  find / -print
# 再過幾秒你再下達 jobs 一次,就會發現 2 號工作不見了!因為被移除了!

範例:找出目前的 bash 環境下的背景工作,並將該工作『正常終止』掉。
[[email protected] ~]# jobs
[1]+  Stopped                 vim ~/.bashrc
[[email protected] ~]# kill -SIGTERM %1
# -SIGTERM 與 -15 是一樣的!您可以使用 kill -l 來查閱!

其中, -9 這個 signal 通常是用在『強制刪除一個不正常的工作』時所使用的, -15 則是以正常步驟結束一項工作(15也是預設值)。如用 vi 時,會產生一個 .filename.swp 的檔案,當使用 -15 這個 signal 時, vi 會嘗試以正常的步驟來結束掉該 vi 的工作, 所以 .filename.swp 會主動的被移除。但若是使用 -9 這個 signal 時,由於該 vi 工作會被強制移除掉,因此, .filename.swp 就會繼續存在檔案系統當中。常用的 signal 至少需要了解 1, 9, 15 這三個 signal 的意義。 此外, signal 除了以數值來表示之外,也可以使用訊號名稱。 signal number 與名稱的對應, 使用 kill -l 就知道。

7、離線管理

『背景』指的是在終端機模式下可以避免 [crtl]-c 中斷的一個情境, 並不是放到系統的背景去!所以,工作管理的背景依舊與終端機有關! 如果是以遠端連線方式連線到你的 Linux 主機,並且將工作以 & 的方式放到背景去, 在工作尚未結束的情況下離線了,該工作不會繼續進行,而是會被中斷掉。

使用nohup 可以在離線或登出系統後,還能夠讓工作繼續進行。語法如下:

<pre name="code" class="plain" style="font-size: 13px;">[r<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;">[email protected] ~]# nohup [命令與引數]   <==在終端機前景中工作</span>
[[email protected] ~]# nohup [命令與引數] & <==在終端機背景中工作 nohup 並不支援 bash 內建的命令,因此命令必須要是外部命令才行。 如下:
# 1. 先編輯一支會『睡著 500 秒』的程式:
[[email protected] ~]# vim sleep500.sh
#!/bin/bash
/bin/sleep 500s
/bin/echo "I have slept 500 seconds."

# 2. 丟到背景中去執行,並且立刻登出系統:
[[email protected] ~]# chmod a+x sleep500.sh
[[email protected] ~]# nohup ./sleep500.sh &
[1] 5074
[[email protected] ~]# nohup: appending output to ‘nohup.out’ <==會告知這個資訊!
[[email protected] ~]# exit

再次登陸,再使用 pstree 去查閱程式,會發現 sleep500.sh 還在執行中喔!並不會被中斷掉! 由於程式最後會輸出一個資訊,但是 nohup 與終端機其實無關了, 因此這個資訊的輸出就會被導向『 ~/nohup.out 』。如果你想要讓在背景的工作在你登出後還能夠繼續的執行,那麼使用 nohup 搭配 & 是不錯的執行情境喔。




相關推薦

Linux-shell作業管理

作業管理 舉例來說,我們在登陸 bash 後, 想要一邊複製檔案、一邊進行資料搜尋、一邊進行編譯,還可以一邊進行 vi 程式撰寫! 當然我們可以重複登陸那六個文字介面的終端機環境中,不過,能不能在一個 bash 內達成? 當然可以啊!就是使用 job control 啦!

shell作業管理

作業管理:同時進行多個作業(如檢視檔案,搜尋檔案) 1、直接將命令放到背景中執行,使用&,如: vi jmeter.log &2、將【目前】工作丟到背景中【暫停】:[ctrl]-z vi ~/.bashrc # 在 vi 的一般模式下,按下 [ct

shell文件管理jenkins構建過程---window環境報錯:找不到shell文件

文件 jenkins cnblogs 技術 bsp logs -- nbsp alt window環境下報錯:找不到shell文件。查看jenkins本地文件,可以查看到shell文件; 檢查job配置: 發現使用的是Execute shell; 這個項目只能在l

作業管理【Ubuntu-shell

作業管理: 每一條shell命令的輸入--->一個作業 cat -n /etc/hosts | more & 作業,前臺互動執行,後臺無需互動加“&” ------------------------

Linux作業管理

轉自 http://blog.csdn.net/ancient_wind/article/details/9858907 程序的一個比較正式的定義是:在自身的虛擬地址空間執行的一個單獨的程式。 Linux作業系統包括三種不同型別的程序,每種程序都有自己的特點和屬性。

人機交互設計課作業

img 第一個 搜索 影響 ron nbsp 宋體 strong 皮膚 對搜狗拼音輸入法進行評價: 一、用戶界面 1.用戶的界面即輸入法的小界面,界面小,從用戶的角度出發,不影響用戶對電腦的操作。 2.若有老年人使用的話,可更換放大版的輸入模式。 3.若要更換輸入

作業之輸入法

搜狗 吸引 打出 現在 界面 更新 想要 而且 皮膚 現在所用的輸入法是搜狗輸入法 搜狗輸入法的界面很好看,有很多種皮膚,可以自己選擇自己想要的皮膚,而且皮膚的種類很多,而且更新周期也很短 記住用戶選擇方面也很完善,像一些常打出來的詞匯,它總是能記住,然後以後你只要打出一個

pbs 作業管理命令

fix native ted ria enabled 一個 dash nat 命令 PBS 提供4 條命令用於作業管理。 (1) qsub 命令—用於提交作業腳本 命令格式: qsub [-a date_time] [-c interval] [-C

Windows64位安裝GPU版TensorFlow 0.12,Power Shell輸入:安裝Tensorflow的全教程

unless 設置環境變量 log api err 化工 查看 aid nbsp 推薦使用powershell,只需要在cmd指令窗口輸入powershell即可 下載64位Python3.5(一定要3.5!!)可以通過Python 3.5 from python.org

shellaction:command not found

command 程序語言 action 開發 今天測試同事寫的一個shell腳本,執行的時候報錯,錯誤代碼為"action: command not found"檢查腳本發現“. /etc/init.d/functions”居然被註銷了, 取消註釋後,繼續執行腳本:報錯消失,問題得到解決。說明

notepad編寫的腳本在shell無法運行

base roi 當前 html ase mage 一次 可能 llb Notepad++ 是一款Windows環境下免費開源的代碼編輯器,支持的語言:C, C++ , Java , C#, XML, HTML, PHP, Javascript! 本文給大家講解的是

linux shell獲取cpu溫度

ima wid src pre images 兩個 alt cat light cpu0:cat /sys/class/thermal/thermal_zone0/temp cpu1:cat /sys/class/thermal/thermal_zone1/temp  

shell進行文本編輯

文本編輯 方便 trac ng- 文本 clas 使用 art 編輯器 在terminal shell下須要寫一些代碼進行測試所以就須要寫java文件,須要用到文本編輯器 有一些大嬸喜歡使用vi,我認為操作起來不方便,用的是nano 比方須要新建一個java文件

eclipsemaven管理web開發,jar包無法編譯出來的問題

color cep 文件 add trie path pri ring build 問題:   使用maven創建spring的web項目,debug之後報錯:     ...classNotFoundException: org.springframework.web.c

linux shell16進制 “uxxxx” unicode to UTF-8中文

city 使用 orm tac 字符 3.1 方法 查詢接口 var 問題出現背景:   項目中有個通過ip獲取歸屬地城市需求,我是直接通過新浪的ip歸屬查詢接口來獲取的。我使用的是shell腳本調用   RESULT=$(curl -s ‘http://int.dpool

spark-shell有提示了,但是發現不能退格

free cal mem tex hit eno 分享 data ref 配好了Spark集群後,先用pyspark寫了兩個小例子,但是發現Tab鍵沒有提示,於是打算轉到scala上試試,在spark-shell下有提示了,但是發現不能退格,而且提示也不是復寫,而是追加,這

作業04-1字符串加密

() char 代碼 操作 print system.in mage 加密 static 1.程序設計思想 字符串分加密與解密兩種操作,首先輸入一個字符串,用一個ifelse來判斷是哪種操作,當需要加密時,用str.length()求出字符串的長度,用str.charAt(

20155317 第八周課作業(1)

-1 4.4 nbsp http images x86 alt logs ima 20155317 第八周課下作業(1) 4.47: 冒泡排序實現: X86-64匯編: Y86-64匯編 4.48 實現冒泡排序,要求不使用跳轉,且最多使用3次條件傳送。 X86-

如何在shell免密碼快速登陸MySQL數據庫?

mysql當我們在 Shell 下想要通過 mysql-client 登陸到 MySQL 數據庫的時候,我們總是需要非常麻煩的輸入一次又一次的密碼。通常我們登陸數據庫的時候都是這樣登陸的,如下root@test:~# mysql -uroot -p Enter password:如何使用輸入:mysql就直接

2017-2018-1 20155330 《信息安全系統設計基礎》課堂測試&課作業

arm 基本 發送 系統 ase ner 存在 image 包含 2017-2018-1 20155330 《信息安全系統設計基礎》課堂測試&課下作業 stat命令的實現-mysate 學習使用stat(1),並用C語言實現 提交學習stat(1)的截圖 man