![cronjob의 소유자/사용자 가져오기](https://linux55.com/image/7733/cronjob%EC%9D%98%20%EC%86%8C%EC%9C%A0%EC%9E%90%2F%EC%82%AC%EC%9A%A9%EC%9E%90%20%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0.png)
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 crontab
cronjob은 LOGNAME
환경 변수에서 소유 사용자의 사용자 이름을 찾는 것이 좋습니다.
여러 환경 변수는 cron(8) 데몬에 의해 자동으로 설정됩니다.
SHELL
로 설정 되고/bin/sh
은LOGNAME
crontab 소유자 행에서HOME
설정 됩니다. crontab의 설정으로 재정의할 수 있습니다./etc/passwd
HOME
SHELL
LOGNAME
(참고: 이
LOGNAME
변수는 때때로USER
BSD 시스템에서 호출되며 자동으로 설정되기도 합니다).