Tengo este conjunto cronjob:
* * * * * /usr/bin/systemctl suspend
Y no está funcionando. Pero puedo ejecutarlo en un shell y funciona. No entiendo lo que podría no estar funcionando.
EDITAR
error de redireccionamiento de salida para /tmp/errorda esto:
Failed to issue method call: Access denied
Failed to issue method call: Access denied
Mi pregunta es entonces: ¿Se ejecutan cronjobs como un usuario especial ( cronpor ejemplo), lo que explicaría que mi usuario puede ejecutar el comando, pero no él cronmismo?
Explicación adicional:
Este es un ejemplo mínimo para mostrar un problema que tengo en un script (eso tiene más sentido que el comando único proporcionado aquí)
systemctles parte desystemd. Creo que reiniciar, apagar, suspender funcionan con un usuario no rootsystemd. De todos modos, está funcionando en mi sistema.Por último, yo uso Linux del arco y
/bin,/usr/sbin,/sbinson todos los enlaces simbólicos a/usr/bin.

systemctlestá dentro/usr/biny aceptasuspendasí? ¿Qué * nix estás usando?systemctl suspendno funciona en las distribuciones de Debian o RedHat) y, por lo tanto, explica que en realidad no desea hacer lo que está mostrando :). Además, intente agregar2> /tmp/erroro algo para capturar cualquier error que pueda estar recibiendo. Finalmente, díganos qué usuario está ejecutando este crontab.Respuestas:
Realmente no puedo responder como tal, pero creo que puedo orientarte en la dirección correcta. Encontré esto en la página de Arch Wiki de
systemd:Esto me sugiere las siguientes posibilidades:
Tiene otro usuario conectado. ¿Quizás ha iniciado sesión a través de un tty?
cronejecuta sus comandos usando/bin/sh. Por defecto , en Arch esto es un enlace simbólico a/bin/bash. Esto significaría quecronestá iniciando un shell bash no interactivo que luego detecta que hay otra sesión de usuario ejecutándose (la suya), por lo que no tiene derecho a ejecutarse asystemctlpesar de ejecutarse como su usuario.Entonces, si su problema se debe a
cronque no está permitido ejecutarlosystemctlporque ya ha iniciado sesión, es posible que pueda solucionarlo jugando con polkit, pero no tengo experiencia allí, así que no puedo ayudarlo.fuente
wyuptimedesde los scripts ejecutados por cron. Sus salidas indicaron que solo había un usuario. Entonces, ¿esto significa que hay algún otro problema?Una solución fácil es usar el crontab de root en lugar del tuyo. Edítalo con:
en lugar de:
fuente
Citando desde aquí :
fuente
Si está utilizando el crontab del sistema, entonces olvida el campo de usuario. Tratar:
fuente
/etc/crontab, ¿es este un crontab que creócron -ecomo usuario normal?crontab -eun usuario normal.systemctl suspendsin sudo.Necesita usar el archivo de configuración systemd en
/etc/systemd/systemfuente