shell指令碼 後台執行命令

2021-09-20 15:46:35 字數 1803 閱讀 1232

crontab、at和nohup

cron 系統排程程序。可以使用它在每天的非高峰負荷時間段執行作業,或在一周或一月

中的不同時段執行。

at at命令。使用它在乙個特定的時間執行一些特殊的作業,或在晚一些的非負荷高峰時

間段或高峰負荷時間段執行。

& 使用它在後台執行乙個占用時間不長的程序。

nohup 使用它在後台執行乙個命令,即使在使用者退出時也不受影響。

cron和crontab

可以在cron.allow和cron.deny 設定使用者使用crontab

crontab的域: 分<>時<>日<>月<>周<>命令

crontab 命令選項

crontab [-u user] -e -l -r

-u 使用者名稱

-e 編輯

-l 檢視

-r 刪除

crontab -l > $home/mycron 來進行備份,一旦誤刪了crontab,可以使用crontab 來恢復,filename就是在home中的副本檔案,也可以直接拷貝到/var/spool/cron/

at

和cron一樣 at命令一樣可以在at.allow和at.deny中設定使用者使用該命令

at的基本形式:

at [-f script] [-m -l -r] [time] [date]

-f script 所要提交的命令或指令碼

-l 列出當前所有等待執行的作業,atq一樣的作用

-r 清除作業,需要提供相應的作業id號,在unix變體中或許使用到atrm

-m 完成後傳送郵件

time at命令的時間格式比較靈活,可以使用hh/hh.mm/h.m,甚至可以使用am和pm

date 日期模式 可以使用today tomorrow

舉個例子:

at 21:00

find / -name "passwd" -print

這裡的eot 就相當於ctrl-d

下面的命令日期at命令是可以接受的:

at 6.45am may12

at 11.10pm

at now + 1 hour

at 9am tomorrow

at now + 10 minutes

如果希望at提交乙個指令碼的話:

還可以使用echo 來向at提交命令

echo find /etc -name "passwd" -print | at now + 1 mintue

at -l 來顯示所有作業

當被提交的作業時候,at會拷貝到/var/spool/at 來準備執行

at -r [job no]

atrm [job no]

&符號

後台執行

command > out.file 2>&1 &

比如:find /etc -name "srm.conf" -print > find.dt 2>&1 &

ps -ef | grep 程序名

kill -signal 程序號 殺死程序

nohup 命令提交

nohup command > myout.file 2>&1 &

指令碼提交

nohup ./quarterend.sh > qur.out 2>&1 &

laihuadongcto

後台執行shell指令碼

執行方式 nohup sh export data.sh 20150102 20150102.log 2 1 1 29531 其中 0 1 2分別代表如下含義 0 stdin standard input 1 stdout standard output 2 stderr standard erro...

Shell 指令碼後台執行

目錄用法 說明sh test.sh 將指令碼放在後台執行 常用方法 crtl c 停止執行當前任務或指令碼 crtl z 暫停執行當前任務或指令碼 bg 把當前任務或指令碼放到後台執行,此處可以理解為background fg 把當前指令碼或任務放到前台執行,如果有多個任務,可以使用fg加任務編號調...

怎麼在後台執行shell指令碼

執行指令碼test.sh test.sh中斷指令碼test.sh ctrl c在1的基礎上將執行中的test.sh,切換到後台並暫停 ctrl z執行ctrl z後,test.sh在後台是暫停狀態 stopped 使用命令 bg number讓其在後台開始執行 number 是使用jobs命令查到的...