[英]Permission denied with bash.sh to run cron
如何在此處使用 bash 腳本運行 cron。我做了如下操作,此處有錯誤。我想知道如何在 ubuntu 中執行此操作。我現在對它感到震驚
bash.sh 文件
#!/bin/bash
cd /var/www/Controller
/usr/bin/php post.php
在 crontab -e
* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1
但現在我收到以下錯誤
/bin/sh: 1: /home/samitha/bash.sh: Permission denied
我將如何修復它? 我做錯了什么?
您也可以嘗試以下解決方案:
chmod +x post.php
chmod +x bash.sh
echo "* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1" >> cronjob
chmod +x cronjob
/etc/init.d/crond start #redhat based servers like centos
/etc/init.d/cron start #debian based servers like ubuntu
crontab cronjob
執行該 cron 的用戶(執行 cron -e 的用戶)沒有執行該腳本的適當權限。 也就是說:要么腳本缺少執行標志,要么無法訪問它,因為它的某些祖先目錄缺少執行標志。
問題可能是您的用戶無權執行該文件。
首先你為你的腳本設置執行標志
chmod +x /home/samitha/bash.sh
然后你應該檢查php文件的權限
ls -lah /var/www/Controller
如果您的用戶組和用戶名均未顯示,則必須以超級用戶權限運行腳本或更改其權限。
第一種方法是將您的條目放入
sudo crontab -e
或者第二個是(我不推薦,因為每個人都可以通過調用您的站點來執行腳本)
chmod a+x /var/www/Controller/post.php
TL;DR:在 crontab 中的腳本和腳本調用的任何腳本之前插入“bash”。
我有一個解決辦法。 以前的答案都不適合我。 我有兩台運行 Kubuntu(更新到內核 v5.8)的華碩筆記本電腦,配置幾乎相同。 我不知道為什么一個有問題,另一個沒有。 但是,經過 2 天的實驗,我找到了解決方法。 希望有比我更了解的人可以找到原因。
Cron 使用 sh 而不是 bash。 我嘗試在 crontab 中的命令上方添加 SHELL=/bin/bash 並定義 PATH ,但沒有效果。 我所有的腳本都以 #!/bin/bash shebang 開頭,也沒有效果。 我的腳本(和它們的目錄)權限是 777。無論我在文件上嘗試過什么 user:group 組合,腳本都不會為 cron 或用戶運行。 使用完整路徑名是 cron 並且在腳本內部沒有與使用環境變量不同的效果。
我的解決方法是在 crontab 中的腳本文件名之前插入“bash”。 例如:
00 01 * * * bash $BASH_SCRIPTS/backup_os.sh
(是的,cron 使用我在 /etc/environment 中定義的環境變量沒有問題。)此外,在 cron 中,當一個腳本運行另一個腳本時,第二個腳本將獲得“權限被拒絕”,除非該腳本被修改為具有“bash” " 在第二個腳本的文件名之前,或者如果這適用於您的腳本,則使用“源”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.