Shell-Script

用於 cron 作業的 shell 腳本

  • November 14, 2018

我剛剛在 cpanel 中設置了一個 cron-job,但是雖然它似乎正在執行腳本,但它並沒有按預期工作。

這是 cpanel 中的 cron 作業命令:

/bin/sh /home/my-username/cronjobs/sedclearmalw.sh

這是腳本的內容:

#!/bin/bash
cd ../public_html/
grep -rl '_0xaae8' . | xargs sed -i 's/var\s_0xaae8.*//g'

我相信 cd 命令應該是正確的,因為它需要返回一個目錄然後輸入 public_html,但是第二個命令似乎是問題所在。我已經嘗試通過 ssh 執行它,(bash sedclearmalw.sh)它似乎執行了大約 15 秒,但它沒有完成它的工作,因為我使用以下命令進行了檢查:

grep -rl '_0xaae8'

它返回 1 個包含 _0xaae8 的文件。任何幫助都將不勝感激,它必須很簡單,因為我知道 shell 腳本中的上述命令在通過 ssh(而不是通過腳本)執行時可以正常工作。

問題是由於使用了相對路徑。當cron執行一個預定的作業時,它使用所有者的主目錄作為它的工作目錄,例如,如果我以 root 使用者的身份安排一個作業,它的工作目錄將是/root/(在 Cent OS 系統上)。

您應該在cd命令中指定絕對路徑。如果您沒有在腳本中執行任何其他命令,則可以在一行中執行所有命令:

grep -rl '_0xaae8' /full/path/to/public_html/ | xargs sed -i 's/var\s_0xaae8.*//g'

引用自:https://unix.stackexchange.com/questions/354058