sh test.sh、source test.sh與. test.sh(./test.sh)執行命令的區別:sh是啟用子shell執行而source與.(點)是在當前視窗執行
unset a:清除變數中儲存的內容
系統環境變數配置檔案執行順序:
/etc/profile---->/etc/profile.d/---->~/.bash_profile---->~/.bashrc---->/etc/bashrc
在以上任一檔案未尾新增以下兩行修改系統環境變數,修改完後可以使用source /etc/profile命令立即生效
export
path
shell指令碼中新增系統環境變數和自定義環境變數
#!/bin/bashecho $path
指令碼中的環境變數只在當前的shell(bash)指令碼或其子shell(bash)指令碼下是有效的,指令碼執行完了環境變數也就失效了
指令碼除錯
[root@web01 scripts]# sh [-nvx] scripts.sh
說明: -n 不會執行該指令碼,僅查詢指令碼語法是否有問題,並給出錯誤提示
-v 在執行指令碼時,先將指令碼的內容輸出到螢幕上,然後執行指令碼,如果有錯誤,也會給出錯誤提示
-x 將指令碼的執行過程輸出顯示到螢幕上
使用set命令除錯
引數:set -n:讀命令但並不執行
set -v:顯示讀取的所有行
set -x:顯示所有命令及引數
set -x開啟除錯,set+x關閉除錯,set命令主要用來縮小除錯範圍。例:
[root@web01 scripts]# cat test3.sh
#!/bin/bash
set -x
if [ -f /var/log/iptables.log ];then
echo "iptables.log is ok"
set +x
else
echo "iptables.log is error"
fishell除錯技巧
指令碼巢狀
[root@web01 scripts]# cat bieming.sh
#!/bin/bash
alias qw="echo 123"
[root@web01 scripts]# cat new.sh
#!/bin/bash
source /server/scripts/bieming.sh
qw其它常用操作
用法 說明
sh while1.sh &
把指令碼while1.sh放到後台執行
ctl+c
停止執行當前指令碼或任務
ctl+z
正在前台執行的命令放到後台且暫停執行當前指令碼或任務
bg把當前指令碼或任務放到後台執行,bg可以理解為background
fg把當前指令碼或任務拿到前台執行,如果有有多個任務,可以使用fg加任務編號調出對應指令碼任務,如fg 2,調出第二個指令碼任務,fg可以理解為frontground
jobs
檢視當前執行的指令碼或任務
kill
關閉執行的指令碼任務,即以「kill 程序號」的形式關閉指令碼,這個任務編號,可以通過jobs獲得
1) 使用sh /server/scripts/while_01.sh &命令,即使用&在後台執行指令碼。
2) 使用nohup /server/scripts/uptime.sh &命令,即使用nohup加&在後台執行指令碼。
3) 利用screen保持會話,然後在執行命令或指令碼。也就是使用screen保持當前會話狀態。
screen [option 《作業名稱》]
-r 《作業名稱》 恢復離線的screen作業
-s 《作業名稱》 指定screen作業的名稱
更多有關程序管理的linux相關命令如下。
kill、killall、pkill:殺掉程序。
ps:檢視程序。
pstree:顯示程序狀態樹。
top:顯示程序。
renice:改變優先權。
nohup:使用者退出系統之後繼續工作。
pgrep:查詢匹配條件的程序。
strace:跟蹤乙個程序的系統呼叫情況。
ltrace:跟蹤程序呼叫庫函式的情況。
shell指令碼(管理守護程序)
工作中常常會遇到處理訊息佇列的消費者程序,這樣的程序是乙個守護程序,即乙個服務。服務通常寫個shell指令碼來管理,查詢服務的status 啟動start 關閉stop 重啟reload。最近在學習shell,也模仿寫了乙個簡單的服務管理指令碼 首先貼出模擬的守護程序服務,php程式,命名demo....
shell指令碼之使用者管理
usr bin env bash 指令碼名稱 usermanager.sh 指令碼功能 賬號管理 指令碼引數 無 建立時間 2019 07 25 作 者 mr.guo 版 本 v1.0 提示資訊 note message 建立賬戶 user string,passwd string create u...
管理Redis程序的Shell指令碼
下面是乙個 shell 指令碼,用於管理 redis 程序 啟動,停止,重啟 這個指令碼可供參考。bin sh redis this script starts and stops the redis server daemon chkconfig 85 15 description redis i...