Bashスクリプトを使用して反復ジョブを実行する

Bashスクリプトを使用して反復ジョブを実行する

私はいくつかの繰り返しタスクを実行していますが、1つのコマンド(run bash script)ですべてのタスクを実行できる小さなbashスクリプトを作成することをお勧めします。私が実行する必要があるタスクは次のとおりです。

# stop HTTPD, clear logs, start HTTPD back
service httpd stop
cd /var/log/httpd/
rm -r *
service httpd start

# clear PHP error logs
truncate /var/log/php/php_errors.log --size 0

# clear MySQL error, query and slow logs
truncate /var/log/mysql/mysql_error.log --size 0
truncate /var/log/mysql/mysql_query.log --size 0
truncate /var/log/mysql/mysql_slow.log --size 0

これが私がすることです:

#! /bin/bash

# stop HTTPD, clear logs, start HTTPD back
service httpd stop
cd /var/log/httpd/
rm -r *
service httpd start

# clear PHP error logs
truncate /var/log/php/php_errors.log --size 0

# clear MySQL error, query and slow logs
truncate /var/log/mysql/mysql_error.log --size 0
truncate /var/log/mysql/mysql_query.log --size 0
truncate /var/log/mysql/mysql_slow.log --size 0

ところで、このエラーが引き続き発生し、私が何が間違っているのかわかりません。

bash: ./cleanup.sh: /bin/bash^M: 無効なソルバー: ファイルまたはディレクトリが存在しません。

私は何が間違っていたか逃したのですか?

ベストアンサー1

あなたは走らなければなりませんdos2unixファイル内のファイルは、Windowsファイルの終わりを使用してLinuxディストリビューションにコピーできます。とも呼ば^Mれる入力するLinuxディストリビューションbash^Mに代わりにfindコマンドが必要だと思うようにするには、文字を使用してくださいbash

実際に文字を表示するには、^M次のようにファイルを開くことができますcat -A

$ cat -A file
# --- comment: expected output below ---
#! /bin/bash^M
# stop HTTPD, clear logs, start HTTPD back^M
service httpd stop^M
cd /var/log/httpd/^M

まだインストールしていない場合は、コマンドの置き換えをdos2unix試すこともできます(説明されているように)。trここ):

tr -d '\r' < inputfile > outputfile

おすすめ記事