명령줄에서(루트 권한으로) bash 스크립트를 실행하는 경우 스크립트 내에서(스크립트가 계속 실행되는 동안) 시작 명령을 가로채서 기록할 수 있습니까?
나는 더 명확하게하려고 노력했습니다. ./reconfig.sh -host localhost ... 및 기타 매개변수를 사용하여 명령줄에서 스크립트를 시작합니다. 스크립트가 실행되면 스크립트 내부에 로그 파일이 기록되는데, 여기에 시작 명령도 기록하고 싶습니다.
답변1
스크립트를 편집할 수 있는 옵션이 있는 경우 "로거" 명령을 추가하여 시스템 로그에 원하는 내용을 기록할 수 있습니다.
내 Fedora 시스템에서는
/usr/bin/logger $USER가 방금 $0을(를) 실행했습니다.
bash 프롬프트에서 실행하여 현재 타임스탬프가 포함된 로그 항목을 추가하고 내 로그인 ID[로거 명령의 PID] 소스가 방금 bash를 실행했습니다.
이 로거 명령의 메시지에 원하는 정보를 추가할 수 있습니다. 다른 명령의 기준을 logger 명령으로 전송할 수도 있습니다.
$0은 현재 실행 중인 명령의 이름을 보유하는 특수 변수입니다(bash 프롬프트에서는 bash이지만 스크립트에서는 스크립트의 파일 이름이 됩니다).
.bashrc 또는 기록하려는 프로세스를 실행할 사용자의 다른 시작 파일에 액세스할 수 있는 경우 별칭을 만들 수도 있습니다.
방금 시도했습니다.
별칭 logls='/usr/bin/logger 목록 디렉토리 ls'
그런 다음 로그인
그리고 현재 디렉터리 목록과 시스템 로그에서 타임스탬프가 표시된 로그 항목을 가져옵니다.
별칭이 원본 스크립트와 동일한 이름으로 설정되면 사용자에게 매우 투명해집니다. 물론 별칭 정의에서 원본 스크립트의 전체 경로를 지정해야 할 수도 있습니다.