Jenkins踩坑之旅:nohup後臺執行shell命令
有時我們希望將某個命令放在後臺執行,然後並行(非同步)執行其他命令。但在Jenkins上很容易遇到無法真正將命令放到後臺執行的問題。
原因是pipeline在退出node{}的時候,會預設清理自己發出的每個shell命令,即使使用了nohup。
例如如下程式碼無法在後續的程式查詢中找到top程式
pipeline {
agent {
label 'master'
}
stages {
stage('Example') {
steps {
script {
node("vm-1") {
sh "nohup top -b > /dev/null &"
}
node("vm-1") {
sh "ps -ef | grep top"
}
}
}
}
}
}
執行結果如下
[Pipeline] sh
+ grep top
+ ps -ef
tengrui 21907 21904 0 06:10 ? 00:00:00 grep top
解決方法是加入環境變數BUILD_ID=DONTKILLME
pipeline {
agent {
label 'master'
}
stages {
stage('Example') {
steps {
script {
node("vm-1") {
sh "BUILD_ID=dontKillMe nohup top -b > /dev/null &"
}
node("vm-1") {
sh "ps -ef | grep top"
}
}
}
}
}
}
執行結果如下
[Pipeline] sh
+ ps -ef
+ grep top
tengrui 21915 1 1 06:11 ? 00:00:00 top -b
tengrui 21925 21922 0 06:11 ? 00:00:00 grep top
注:
- 當pipeline退出node{}程式碼塊的時候,才會清理shell程式
- 也可以使用JENKINS_NODE_COOKIE=dontKillMe
相關文章
- Linux nohup:後臺不掛起命令(後臺執行命令)Linux
- linux後臺執行命令:&與nohup的用法Linux
- windows的nohup後臺執行Windows
- shell:nohup (在系統後臺不掛起地執行命令,退出終端不會影響程式的執行)
- shell後臺執行
- Jenkins踩坑之旅:使用Date物件產生RejectedAccessExceptionJenkins物件Exception
- jenkins後臺程式執行Jenkins
- nohup在後臺常駐執行php指令碼PHP指令碼
- Python踩坑之旅其一殺不死的Shell子程式Python
- linux 中的 nohup 命令(設定後臺程式): nohup: ignoring input and appending output to ‘nohup.out’LinuxAPP
- 還在用nohup? 來試試Supervisor吧 -Linux後臺執行Linux
- Linux 後臺執行命令Linux
- jenkins 遷移踩坑Jenkins
- Vue踩坑之旅——methodsVue
- Vue踩坑之旅——VuexVue
- java 執行shell命令及日誌收集避坑指南Java
- vue系列之踩坑之旅Vue
- FLUTTER混合工程踩坑之旅Flutter
- laradock-的踩坑之旅
- mpvue小程式踩坑之旅Vue
- Linux 下後臺執行和按照守護程式方式後臺執行的坑Linux
- [linux] 使用Screen後臺執行命令Linux
- Jenkins郵箱配置踩坑錄Jenkins
- python裡執行shell命令或cmd命令Python
- 【Mongo】shell命令列模式執行mongo命令Go命令列模式
- nohup命令
- awk小技巧之執行shell命令
- 用Java執行Python:Jython踩坑筆記JavaPython筆記
- Flutter接入現有Android工程踩坑之旅FlutterAndroid
- mumu模擬器 adb shell 登入後執行命令 Inappropriate ioctl for deviceAPPdev
- 【踩坑指南】執行緒池使用不當的五個坑執行緒
- shell指令碼linux命令連續執行指令碼Linux
- shell指令碼命令 執行python檔案&python命令列執行python程式碼指令碼Python命令列
- 小程式踩坑之旅--動態設定tabBartabBar
- 小程式踩坑之旅–動態設定tabBartabBar
- H5音訊處理——踩坑之旅H5音訊
- nohup 命令的使用
- nohup 命令及其示例