當前位置:首頁 » 編程軟體 » shell腳本暫停

shell腳本暫停

發布時間: 2022-11-17 07:48:58

⑴ shell腳本執行kill命令後自動停止的問題

背景:每周重啟jenkins

所以寫了一個腳本,命名為 auto_restart_jenkins.sh

其中裡麵包含了一個kill命令:ps -ef | grep jenkins | grep -v grep | awk '{print "kill -9 "$2}' | sh

但是每次執行到這一步的時候整個shell腳本就被kill掉了。

原因:因為shell腳本名中包含了jenkins,所以在執行kill命令的時候,也就把shell腳本kill掉了。

最後,改一下shell腳本名就好了,不要包含jenkins

或者在shell腳本中添加參數 export BUILD_ID=dontKillMe

linux系統定時任務時shell腳本停止執行如何解決

linux下使用crontab命令被用來提交和管理用戶的需要周期性執行的任務,示例如下:
crontab
-e
編輯周期任務
30
21
*
*
*
/etc/init.d/smb
restart
每晚的21:30重啟smb
crontab命令說明:
crontab命令被用來提交和管理用戶的需要周期性執行的任務,與windows下的計劃任務類似,當安裝完成操作系統後,默認會安裝此服務工具,並且會自動啟動crond進程,crond進程每分鍾會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
語法
crontab(選項)(參數)
選項
-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u<用戶名稱>:指定要設定計時器的用戶名稱。
參數
crontab文件:指定包含待執行任務的crontab文件。
知識擴展
linux下的任務調度分為兩類:系統任務調度和用戶任務調度。
系統任務調度:系統周期性所要執行的工作,比如寫緩存數據到硬碟、日誌清理等。在/etc目錄下有一個crontab文件,這個就是系統任務調度的配置文件。
crontab文件的含義:
用戶所建立的crontab文件中,每一行都代表一項任務,每行的每個欄位代表一項設置,它的格式共分為六個欄位,前五段是時間設定段,第六段是要執行的命令段,格式如下:
minute
hour
day
month
week
command
順序:分




其中:
minute:
表示分鍾,可以是從0到59之間的任何整數。
hour:表示小時,可以是從0到23之間的任何整數。
day:表示日期,可以是從1到31之間的任何整數。
month:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。
command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。
在以上各個欄位中,還可以使用以下特殊字元:
星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,「1,2,5,7,8,9」
中杠(-):可以用整數之間的中杠表示一個整數范圍,例如「2-6」表示「2,3,4,5,6」
正斜線(/):可以用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鍾執行一次。

⑶ shell腳本讓進程在後台運行以及進程後台轉前台

我們計算的程序都是周期很長的,通常要幾個小時甚至一個星期。我們用的環境是用 putty 遠程連接到日本 Linux 伺服器。所以使程序在後台跑有以下三個好處:

1:我們這邊是否關機不影響日本那邊的程序運行。(不會像以前那樣,我們這網路一斷開,或一關機,程序就斷掉或找不到數據,跑了幾天的程序只能重頭再來,很是煩惱)

2:不影響計算效率

3:讓程序在後台跑後,不會占據終端,我們可以用終端做別的事情。

方法有很多,這里主要列舉兩種。假如我們有程序 pso.cpp ,通過編譯後產生可執行文件 pso ,我們要使 pso 在 linux 伺服器後台執行。當客戶端關機後重新登入伺服器後繼續查看本來在終端輸出的運行結果。(假設操作都在當前目錄下)

方法1在終端輸入命令:

解釋:將 pso 直接放在後台運行,並把終端輸出存放在當前目錄下的 log.file 文件中。

當客戶端關機後重新登陸伺服器後,直接查看 pso.file 文件就可看執行結果(命令:$ cat pso.file )。
方法2在終端輸入命令:

解釋: nohup 就是不掛起的意思,將 pso 直接放在後台運行,並把終端輸出存放在當前

目錄下的 pso.file 文件中。當客戶端關機後重新登陸伺服器後,直接查看 pso.file

文件就可看執行結果(命令: #cat pso.file )。

註:如果要使在前天執行任務放到後台運行,則先要用 ctrl+z 掛起該任務,然後用 bg 使之後台執行。
附:
在 Linux 中,如果要讓進程在後台運行,一般情況下,我們在命令後面加上 & 即可,實際上,這樣是將命令放入到一個作業隊列中了:

對於已經在前台執行的命令,也可以重新放到後台執行,首先按 ctrl+z 暫停已經運行的進程,然後使用 bg 命令將停止的作業放到後台運行:

但是如上方到後台執行的進程,其父進程還是當前終端 shell 的進程,而一旦父進程退出,則會發送 hangup 信號給所有子進程,子進程收到 hangup 以後也會退出。如果我們要在退出 shell 的時候繼續運行進程,則需要使用 nohup 忽略 hangup 信號,或者 setsid 將將父進程設為 init 進程(進程號為 1 )

上面的試驗演示了使用 nohup/setsid 加上 & 使進程在後台運行,同時不受當前 shell 退出的影響。那麼對於已經在後台運行的進程,該怎麼辦呢?可以使用 disown 命令:

另外還有一種方法,即使將進程在一個 subshell 中執行,其實這和 setsid 異曲同工。方法很簡單,將命令用括弧() 括起來即可:

註:本文試驗環境為 Red Hat Enterprise Linux AS release 4 (Nahant Update 5) , shell 為 /bin/bash ,不同的 OS 和 shell 可能命令有些不一樣。例如 AIX 的 ksh ,沒有 disown ,但是可以使用 nohup -p PID 來獲得 disown 同樣的效果。

還有一種更加強大的方式是使用 screen ,首先創建一個斷開模式的虛擬終端,然後用 -r 選項重新連接這個虛擬終端,在其中執行的任何命令,都能達到 nohup 的效果,這在有多個命令需要在後台連續執行的時候比較方便:

⑷ 每天三分鍾搞定linux shell腳本24 後台模式運行

當運行腳本的時候在最後加上符號 & ,則對應的腳本在 後台運行 。建立腳本為,

輸入 ./test.sh & 運行

運行後1.txt文件會不斷增加內容,但是腳本以後台運行不會在終端佔用。運行結果為:

輸入 jobs 可以看到這個後台進程:

這個時候如果輸入exit,不會提示有後台進程在運行,而且後台進程也會退出。因為終端會話退出的時候會給這個後台進程發送一個 SIGHUP信號 。如果想要終端退出之後,進程不退出,可以讓進程捕獲SIGHUP信號。當然還有另一個方法,使用 nohup 指令運行腳本,比如輸入:

當用 nohup 並使用後台模式運行之後,即使退出終端,進程也不會收到SIGHUP信號。並且nohup會自動把標准輸出和標准錯誤重定向到nohup.out的文件中。

一個 運行的進程或者暫停的進程 都是一個作業,使用 jobs 命令可以查看當前的作業狀態。輸入:

我當前的輸出為:

(上面的作業2是輸入 ctrl+z 後暫停的進程)

其中, + 號被當作是默認作業,每個作業的前面有自己的序號。如果後續操作不加序號,那麼就被當做是在操作默認作業。比如使用 fg 指令前台運行作業,就是把27652這個進程前台運行,如果輸入 fg 1 ,那麼就是操作作業 1 了。帶-號的表示下一個默認作業。

輸入 bg 1 把 1號作業 後台運行,輸入 fg 2 把 2號作業 前台運行。

⑸ linux shell 腳本運行完畢後不能自動停止

最簡單方法:
其實,你按一下回車就可以知道是否"結束"了吧?

更好的辦法:
你在done後面加多兩行:

------------代碼開始------------
wait
echo "All is ok"
exit 0
------------代碼結束------------

參考資料:
wait 命令
http://book.51cto.com/art/201205/338877.htm

⑹ windows shell腳本命令中,暫停一段時間用哪個命令

VBS腳本中可以這樣:
WScript.Sleep
3000
時間單位為毫秒(milliseconds),因此,上面這句就是暫停3秒。
DOS批處理腳本中只能用ping命令來延時(這個時間是很不精確的)。例如:
@ping
127.0.0.1
-n
2
-w
1000
>
nul
另外,Windows
2003
Resource
Kit
提供了sleep的功能,你可以去微軟網站下載安裝。參見下面的鏈接吧。
參考資料:http://malektips.com/xp_dos_0002.html

⑺ shell腳本問題 program="aaa" while true; do sleep 10; done 在後台運行這個腳本後怎麼停止

你執行的是 ./xxx.sh & 慢? 如果是 你可以嘗試 ps -ef | grep xxx.sh
查找到它的PID 然後kill -9 PID

當然 最簡便的 就是 killall xxx.sh
你試試吧

⑻ shell腳本中怎麼實現:暫停,按鍵繼續

1、其中 yum install tomcat 執行過程中需要用鍵盤輸入兩次字元」y」以便確認選項,Dockerfile 腳本命令如下。

⑼ shell腳本中怎麼實現:暫停,按鍵繼續

使用
read
命令暫停,等待用戶輸入,不作任何後續判斷即可,這樣任意鍵都可以繼續。
......
read
-p
"Press
any
key
to
continue."
var
......

⑽ 如何使用shell腳本停止應用

參考最底下的shell 代碼,具體功能都有注釋說明的。 使用時將代碼存入文件中,比如 a.sh, 然後:

chmod+xa.sh#增加可執行許可權
./a.shapp_name#替換app_name為你要中止運行的app名稱,比如firefox,emacs,等等


下面是具體代碼

#!/bin/bash

#要停止的應用名字
name=$1

#先要找到你要停止的應用的PID(進程號).這里用pidof命令來找
PID=`pidof$name`

#如果沒有找到,結束
if[-z"$PID"];then
echo"Error:Process$nameisnotfound"
exit1
fi

#然後用kill命令來向進程發送信號來終止應用
#-9表示發送KILL信號,任何進程收到這個信號後都會無條件終止運行。
kill-9$PID

#完成
echo"Done"
熱點內容
解壓體育館 發布:2025-05-13 21:27:48 瀏覽:263
哪家編程課 發布:2025-05-13 21:27:04 瀏覽:895
為什麼文件要壓縮 發布:2025-05-13 21:16:07 瀏覽:50
區域網怎麼搭建校時伺服器 發布:2025-05-13 21:11:32 瀏覽:677
存儲器讀寫實驗心得 發布:2025-05-13 21:09:23 瀏覽:15
派派手機如何設置密碼 發布:2025-05-13 21:08:02 瀏覽:774
獄辱實驗棟第2集在線ftp 發布:2025-05-13 21:02:06 瀏覽:11
安卓桌面應用如何變大 發布:2025-05-13 20:59:39 瀏覽:361
解壓通知單有什麼用 發布:2025-05-13 20:58:37 瀏覽:567
俄羅斯方塊的編程 發布:2025-05-13 20:51:08 瀏覽:611