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システムで呼び出され、自動的に設定されます)。