cron ジョブに次のコードがあります。実行されますが、コードは本来の動作をしません。ディレクトリは作成されず、コード内では何も行われません。ディレクトリの指定方法が間違っていないか確認してください。
#!/bin/bash
NAMEDATE=`date +%F_%H-%M`_`whoami`
NAMEDATE2=`date `
mkdir ~/home/u3811*****/domains/website.com/public_html/cron/backup/files/$NAMEDATE -m 0755
mysqldump -u u3811*****_boss -p"*******" u3811*****_data | gzip ~/home/u3811*****/domains/website.com/public_html/cron/backup/files/$NAMEDATE/db.sql.gz
echo "This is the database backup for website.com on $NAMEDATE2" |
mailx -a ~/home/u3811*****/domains/website.com/public_html/cron/backup/files/$NAMEDATE/db.sql.gz -s "website.com Database attached" -- [email protected]
chmod -R 0644 ~/home/u3811*****/domains/website.com/public_html/cron/backup/files/$NAMEDATE/*
exit 0
------------------------
次に示すように、NAMEDATE 変数を少し変更する必要があります。bash の変数の詳細については、このリンクを参照してください。
NAMEDATE=$(date +%F_%H-%M"_"$(whoami))
mkdir コマンドを発行するとき、完全なディレクトリ構造が存在しない場合は、-p オプションを渡して完全なディレクトリ構造を作成する必要があります。
mkdir -p ~/home/u3811numbers/domains/website.com/public_html/cron/backup/files/$NAMEDATE -m 0755
また、Linux ベースのディストリビューションの ~ 文字は、これを呼び出すユーザーのホーム ディレクトリへのショートカットとして使用されるため、その下の行の結果は /home//home/u3811*****/domains/website.com/public_html/cron/backup/files になります。 /2020-09-04_23-13_ ここで詳細を読むことができます
終了前の最後のコマンドでは、ディレクトリ上の実行可能ビットの削除を避けるために、ワイルドカード (*) を渡す必要がある場合があります。以下を参照してください。
chmod -R 0644 ~/home/u3811*****/domains/website.com/public_html/cron/backup/files/$NAMEDATE/
スクリプトの最終バージョンは次のようになります。
#!/bin/bash
NAMEDATE=$(date +%F_%H-%M"_"$(whoami))
NAMEDATE2=date
mkdir -p ~/home/u3811******/domains/website.com/public_html/cron/backup/files/$NAMEDATE -m 0755
mysqldump -u u3811*****_boss -p"******" u3811*****_data | gzip > ~/home/u3811*****/domains/website.com/public_html/cron/backup/files/$NAMEDATE/db.sql.gz
echo "This is the database backup for website.com on $NAMEDATE2" | mailx -a ~/home/u3811*****/domains/website.com/public_html/cron/backup/files/$NAMEDATE/db.sql.gz -s "website.com Database attached" -- [email protected]
chmod -R 0644 ~/home/u3811*****/domains/website.com/public_html/cron/backup/files/$NAMEDATE/*
bash スクリプトをデバッグするには、いつでも -x フラグを渡すことができます。詳細については、この記事をご覧ください。
2020 年 9 月 5 日 3:59 に回答
エロチェン
エオロチェナ
196
12 個
銅バッジ 12 個
4
お時間をいただきありがとうございます。エオロチェナですが、問題は解決しません。上に投稿したコードは cpanel では正常に動作しますが、ディレクトリ形式 mkdir -p ~/public_html/cron/backup/files/$NAMEDATE -m 0755 ではなぜ同じことが hpanel で動作しないのかわかりません。それが私が使用してみることにした理由です。ファイルの完全なディレクトリ
– フォン・シュウ
2020 年 9 月 5 日 13:18
@fengxu これはあなたがやろうとしていることですか? hostinger.com/tutorials/…
– エオロチェナ
2020 年 9 月 6 日 21:15
私は他の php cron ジョブを持っていますが、それらは非常にうまく機能しており、ホスティングガーで cron ジョブを設定する方法は知っています。私の問題は、上記の bash スクリプトは機能し、cron ジョブは実行されますが、スクリプトが本来の動作をしないことです。
– fエンシュウ
2020 年 9 月 6 日 21:29
SSH アクセス機能を使用して、スクリプト内の個々のステートメントを実行してみましたか?
– エオロチェナ
2020 年 9 月 6 日 21:56