2010-08-02 11:50:25 +0000 2010-08-02 11:50:25 +0000
68
68

Come eseguire un cron job come utente specifico?

Vorrei eseguire un cron job come un utente specifico sulla mia macchina. Come posso specificare l'utente con cui eseguire un cron job?

I cron job saranno eseguiti su un server (in esecuzione su Ubuntu 10.0.4). Gli ‘utenti’ sono utenti che sono stati creati appositamente per svolgere compiti specifici lato server. Questi “utenti” hanno le seguenti cose in comune:

  • Non possono accedere al sistema
  • Hanno accesso limitato a cartelle/file specifici

Risposte (4)

80
80
80
2010-08-02 11:52:46 +0000

Supponendo che tu non possa semplicemente accedere e aggiungerlo al crontab di quell'utente, metti un file in /etc/cron.d. Dovrebbe essere formattato come un normale cronjob, ma con un campo extra. Prima del comando da eseguire e dopo i tempi, mettete l'utente. Dovreste essere in grado di trovare degli esempi già sul vostro sistema.

Esempio:

#<timing> <user> <command>
11 * * * * root /usr/lib/command
41
41
41
2010-08-02 11:58:55 +0000

Come root, per modificare il cron dell'utente1:

crontab -u user1 -e

Si può anche avviare il comando con:

su user1 -c foo bar

Ma spesso gli stessi script riducono il loro accesso quando vengono avviati come root.

1
1
1
2013-04-27 16:49:38 +0000

Ho cercato questo per un paio di settimane e questo finalmente ha funzionato…

Create il vostro script come utente1

ssh user1@ipaddress
nano hourly-event.sh

inserire qualche comando

#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt

renderlo eseguibile

chmod 755 hourly-event.sh

modificare il crontab per l'utente1

sudo crontab -u user1 -e

mettere una linea in fondo che punti al vostro script(s)

# m h dom mon dow command
* * * * * bash ./hourly-event.sh

uscire - salvare le modifiche (mostrerà una directory /tmp durante il salvataggio. … va bene)

aspetta il turno del minuto

apri il tuo yay.txt appena creato

nano /home/user1/yay.txt

dovresti ora avere una finestra nano aperta con “YAY it works” come prima e unica linea se il fondo della tua finestra nano dice New File… beh… non so

puoi anche controllare il tuo nuovo crontab per user1 a: /var/spool/cron/crontabs/user1

PEACE

0
0
0
2018-11-18 10:05:38 +0000

A volte puoi volere che l'utente carichi il suo ambiente, specialmente quando usi “rbenv”, “nvm”, proprio come questo:

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...

(qui il comando source ~/.bash_profile caricherà l'ambiente Ruby o Node.