當前位置:首頁 » 編程軟體 » shell腳本異常處理

shell腳本異常處理

發布時間: 2023-11-14 06:13:38

Ⅰ jenkins上使用shell腳本nohup部署jar服務到remote伺服器

先貼一下,我的jenkins里最後核心配置

remove_jar.sh腳本:

start_jar.sh腳本內容:

remove_jar.sh 和 start_jar.sh 在jenkins伺服器上,需要將這兩個shell在0.0.0.0(不能暴露)的遠端去執行
沒錯,客官您一眼就看出來了派行,覺得簡單的不值一提吧,先別著急,對搜這個問題的滑歲小菜雞來說這裡面也是大有文章,聽我一一道來。

1、第一個問題:ps -ef|grep xxx.jar查到多餘的pid
現象:在0.0.0.0上行 ps -ef | grep alk-wxapi-test.jar | grep -v grep | awk '{print $2}' 只能查到一個pid,但是把這句話放到shell腳本里,在本地使用命令上遠端執行,就會找到3個pid,而且kill 時提示失敗的錯誤。
現在已經知道原因了,但是當時確實是個問題。
已經解決不方便復現了,因此就描述一下就行了。
原因:shell里的這個命令也是通過bash在遠程執行的,所以找到的別的 無關緊要 的pid其實是bash,因此在grep是除了排除grep本身( grep -v grep )外還要排除bash( grep -v bash )
最後命令是:

2、遠程執行腳本,裡面有nohup java -jar,發生錯誤: nohup: failed to run command 『java』: No such file or directory
這是因為nohup時java環境變數沒有讀到,處理方式就是在nohup執行前加入

3、其他思路

4、第二條說jdk的路徑因為每個服務企業都不一樣,所以需要手動傳改,這一點已經在腳本上做了修改,啟動腳本上信羨睜攜帶的第一個參數就是jdk的安裝路徑

這兩個也都是比較好的思路,以後肯定有機會體驗的,本篇到此。

ps -ef |grep -v 在shell sh 腳本中貌似無效?
linux下搭建zookeeper集群遇到的坑
nohup: cannot run command異常解決
Zookeeper not starting, nohup error

Ⅱ jenkins執行shell腳本,使用scp免密傳輸失敗問題

問題:Jenkins默認使用jenkins用戶去啟動,jenkins用戶並沒有許可權去執行ssh免沒巧襪密登陸,所以導致執行失敗

註:配置linux雙機互信後,jenkins也需要將公鑰加入到目標機器,才能達到shell腳本中scp免密傳輸的條件

一、驗證登錄

1、切換jenkins用戶

# su jenkins

切換後還是root賬號

2、分析解決:

2.1 應該枯激是/etc/passwd文件中的/bin/bash被yum安裝的時候變成了/bin/false

# vim /etc/passwd

jenkins:x:990:988:Jenkins Automation Server:/var/lib/jenkins:/bin/false( bash)

將bin/false改為/bin/bash

再次執行切換

# su jenkins

bash-4.1$

2.2  結果命令提示符的用戶名不是jenkins而變成了 bash-4.1$,原因是在安裝jenkins時,jenkins只是創建了jenkins用戶,並沒有為其創建home目錄

# vim ~/.bash_profile

在文件的最後添加 export PS1='[\u@\h \W]\$',執行文件使修改項起作用

# source ~/.bash_profile

驗證是否成功   # su jenkins

二、為jenkins系統用戶開啟免密登錄

1、在Jenkins的使用過程中,如果在腳本中使用到sudo命令,有可能出現如下所示的錯誤:

sudo: no tty present and no askpass program specified

這是因為Jenkins伺服器在執行sudo命令時的上下文有誤,導致這個命令執行的異常。

2.1 解決方法:

# sudo visudo

在文件末尾加上jenkins ALL=(ALL) NOPASSWD: ALL

2.2 重啟jenkins,測試

# su jenkins

# sudo su -s /bin/bash jenkins

測試成功,jenkins免密登錄成功。

PS:如果誤操作修改了/etc/sudoers的許可權來修改上述文件,則會導致如下所示的錯誤:

sudo :/etc/sudoers is world writable

sudo : no valid sudoers source found, quitting

sudo : unable to initialize poling plugin

這是Linux的一種保護機制。因此,如果出現上述誤操作,則需要執行如下命令來解決:

$ pkexec chmod 0440 /etc/sudoers

三、jenkins用戶開通ssh免密登錄

1、安裝ssh

# yum install ssh

1.1 將ssh服務設置開機自啟寬猛

# sudo systemctl enable sshd

1.2 啟動ssh

# sudo systemctl start sshd

2、生成jenkins用戶秘鑰證書

# su jenkins

# ssh-keygen -t rsa

2.1 查看是否生成成功

# /var/lib/jenkins/.ssh/

# ls

3、將公鑰傳輸到目標linux系統

ssh--id -i /var/lib/jenkins/.ssh/id_rsa.pub root@目標ip:path

------------------------------------------------------------------------------------------

參考:https://blog.csdn.net/weixin_43840640/article/details/90371472

熱點內容
hp存儲擴容 發布:2024-11-17 23:29:16 瀏覽:567
在ftp中put表示什麼 發布:2024-11-17 23:29:12 瀏覽:381
mvc多文件上傳 發布:2024-11-17 23:13:56 瀏覽:153
玩游戲硬碟緩存32m 發布:2024-11-17 23:03:42 瀏覽:523
藍光存儲系統 發布:2024-11-17 23:03:41 瀏覽:434
地平線4提示配置低於最低怎麼辦 發布:2024-11-17 22:54:38 瀏覽:608
注冊銀行卡賬戶密碼填什麼 發布:2024-11-17 22:54:35 瀏覽:535
java壓縮上傳圖片 發布:2024-11-17 22:26:59 瀏覽:626
plc編程課件 發布:2024-11-17 22:18:23 瀏覽:468
我的世界伺服器信號一直在檢測 發布:2024-11-17 22:09:52 瀏覽:547