로그인한 사용자가 실행한 스크립트의 전체 이름을 어떻게 알 수 있나요?

로그인한 사용자가 실행한 스크립트의 전체 이름을 어떻게 알 수 있나요?

사용자가 스크립트에 제공한 옵션/인수를 포함하여 사용자가 실행한 스크립트의 전체 이름을 기록하고 싶습니다.

basename나는 사용하여 약간의 성공을 거둘 수 있었지만 whoami그것은 나에게 논쟁을 불러일으키지 않았습니다.

예:사용자가 다음과 같은 스크립트를 실행한다고 가정해 보겠습니다.

root@host1:./collect_user_summary.ksh -h 20 -l 10 -x local

내 로그 파일에 원하는 출력:

"collect_user_summary.ksh -h 20 -l 10 -x local"

내가 달성한 것:그리고 basename나는 whoami얻을 수 있습니다

"collect_user_summary.ksh  username"

내 환경: 솔라리스 10, 콘셸.

답변1

업데이트: 여러분 대부분이 터미널에 입력된 모든 명령을 기록하도록 지시한 것으로 보입니다. 나는 그것을 원하지 않습니다. 내가 원하는 것은 누군가가 내 스크립트를 실행할 때마다 스크립트 이름과 함께 그가 제공하는 옵션을 기록하기만 하면 되는 것입니다.

잠시 생각한 끝에 마침내 이해하게 되었습니다. 나는 그것을 달성하기 위해 다음 방법을 사용하고 있습니다. 예시 스크립트:

#!/bin/ksh
NAME=`basename $0`
echo `date` $WHOAMI ran this script $NAME with options -h $HVARIABLE -l $LVARIABLE -x $LOCALVARIABLE >> scripts.log
.
..
..
....
echo "SUCCESS" >> scripts.log
exit 0

내 모든 스크립트에 이 두 줄을 포함함으로써 누가 무엇을 하고 있는지, 그들이 제공하는 옵션은 무엇인지 기록할 수 있습니다.

관련 정보