Bash 스크립트를 통해 반복 작업 실행

Bash 스크립트를 통해 반복 작업 실행

저는 몇 가지 반복적인 작업을 실행하고 있는데, 하나의 명령(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

관련 정보