Cronjobs запускаются как пользователь, настроивший crontab. Они не запускаются как специальные пользователи. Обычно, если вы знаете, что существует crontab, вы знаете, кто его создал. Вы можете увидеть crontabs текущего пользователя, запустив
crontab -l
Вы можете найти пользовательские crontabs в каталоге /var/spool/cron/crontabs/
. У каждого пользователя, который создал crontab, будет файл (имя которого является именем пользователя) в этом каталоге. По умолчанию эти файлы доступны для чтения только пользователю, который их создал, поэтому вы не можете их cat
не поигравшись с их разрешениями.
Этот небольшой скриптлет перечислит все команды cron для каждого пользователя:
for u in $(find /var/spool/cron/crontabs/ -type f); do
user=`basename $u`;
echo "------- $user ----";
crontab -u $user -l | grep -v "#";
done
Это перечислит все cronjobs для каждого из пользователей, которые имеют файл crontab в /var/spool/cron/crontabs/
.
Наконец, у вас также есть общесистемные crontabs, которые находятся в /etc/crontab
которые вы можете увидеть, запустив cat /etc/crontab
.
В ответ на ваш комментарий, если вы хотите загрузить определенные переменные, которые определены в данном файле, вы можете source
, что файл в crontab
42 13 * * * . ~/.bashrc && cd /path/to/my/working/folder && /path/to/my/working/folder/script/runner 'MusicService.update_cached_data' -e staging
То .
сопровождаемый файлом, который вы хотите загрузить.
Наконец, вот некоторая соответствующая информация от man 5 crontab
:
An active line in a crontab will be either an envi‐
ronment setting or a cron command. The crontab file
is parsed from top to bottom, so any environment set‐
tings will affect only the cron commands below them
in the file. An environment setting is of the form,
name = value
where the spaces around the equal-sign (=) are
optional, and any subsequent non-leading spaces in
value will be part of the value assigned to name.
The value string may be placed in quotes (single or
double, but matching) to preserve leading or trailing
blanks. To define an empty variable, quotes must be
used. The value string is not parsed for environmen‐
tal substitutions or replacement of variables, thus
lines like
PATH = $HOME/bin:$PATH
will not work as you might expect.
An alternative for setting up the commands path is
using the fact that many shells will treat the
tilde(~) as substitution of $HOME, so if you use bash
for your tasks you can use this:
SHELL=/bin/bash
PATH=~/bin:/usr/bin/:/bin
[...]
Several environment variables are set up automati‐
cally by the cron(8) daemon. SHELL is set to
/bin/sh, and LOGNAME and HOME are set from the
/etc/passwd line of the crontab's owner. PATH is set
to "/usr/bin:/bin". HOME, SHELL, and PATH may be
overridden by settings in the crontab; LOGNAME is the
user that the job is running from, and may not be
changed.
[...]
On the Debian GNU/Linux system, cron supports the
pam_env module, and loads the environment specified
by /etc/environment and /etc/security/pam_env.conf.
It also reads locale information from
/etc/default/locale. However, the PAM settings do
NOT override the settings described above nor any
settings in the crontab file itself. Note in particu‐
lar that if you want a PATH other than
"/usr/bin:/bin", you will need to set it in the
crontab file.