cronjob의 소유자/사용자 가져오기

cronjob의 소유자/사용자 가져오기

Linux(Mint/Ubuntu)에서는 각 사용자에 대해 개별적으로 cronjob을 생성할 수 있습니다. cronjob을 실행하는 사용자의 이름을 알아낼 수 있는 방법이 있습니까? cron'd를 실행할 쉘 스크립트에서 cronjob 소유자의 사용자 이름을 얻고 싶습니다.

답변1

스크립트 소유자 가져오기

stat최신 GNU 호환 시스템에서 stat스크립트 소유자의 사용자 ID는 다음과 같습니다.

stat -c %u "$0"

스크립트 소유자의 사용자 이름은 다음과 같습니다.

stat -c %U "$0"

일반적으로 Linux에서는 . stat -c %U file을 반환합니다 file. $0해당 변수에는 일반적으로 현재 스크립트 파일의 이름이 포함되어 있기 때문입니다.

스크립트를 실행하는 사용자의 유효 사용자 ID를 가져옵니다.

스크립트를 실행하는 사용자의 유효 사용자 ID 번호를 얻으려면 다음을 사용하십시오 id -u.

$ id -u
1001

변수에 저장

$ uid=$(id -u)
$ echo "$uid"
1001

스크립트가 다음 환경에서 실행되는 경우 bash유효한 사용자 ID는 쉘 변수에 저장됩니다 EUID.

$ echo $EUID
1001

많은 시스템에서는 cronjob이 기본적으로 dash지원되지 않습니다 EUID. 따라서 id -u위에 표시된 대로 사용하는 것이 더 안전하고 안정적입니다.

-n-u사용자 이름을 가져오려면 이 옵션을 사용하는 것 외에도 다음 옵션을 사용하세요.

$ id -un
john1024

답변2

man 5 crontabcronjob은 LOGNAME환경 변수에서 소유 사용자의 사용자 이름을 찾는 것이 좋습니다.

여러 환경 변수는 cron(8) 데몬에 의해 자동으로 설정됩니다. SHELL로 설정 되고 /bin/shLOGNAME crontab 소유자 행에서 HOME 설정 됩니다. crontab의 설정으로 재정의할 수 있습니다./etc/passwdHOMESHELLLOGNAME

(참고: 이 LOGNAME변수는 때때로 USERBSD 시스템에서 호출되며 자동으로 설정되기도 합니다).

관련 정보