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