Creo que ambos -c
parámetros ( su
y bash
) tendrán que ser citados como mínimo.
su - username -c "/usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'"
También -
se espera que sea el último y puede no ser deseable aquí (ver man su
).
Algunas observaciones más. sudo
podría ser una mejor opción para un comando de un solo disparo como el suyo, pero no necesariamente:
sudo -iu username /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'
En particular, puede usar un nivel menos de cita con sudo
.
Otra cosa con la que debe tener cuidado es ejecutar comandos sin ruta absoluta en un contexto privilegiado. Esto es válido para su
(o sudo
) pero también para la ruta a bash
en su comando. Lo estás haciendo bien con screen
.
Acabo de probar lo siguiente y funciona bien. Creo que este -
es el problema principal en su línea original:
/bin/su username -c "/usr/bin/screen -dmS test bash -c '/home/username/test.sh; exec bash'"
Mal comentario: ¿por qué no lo tmux
intentas? Recientemente me cambié y nunca miré hacia atrás. Lo único que necesitaba cambiar de inmediato era la combinación de teclas de prefijo que por tmux
defecto es Ctrl+ B- de nuevo a GNU screen
's Ctrl+ A.
Permite dividir su ventana en un número casi arbitrario de paneles (vertical y horizontalmente) y su formato de archivo de configuración (incluido el del par de estado) es realmente inteligible para los humanos. Por supuesto, tmux
es tan bueno como screen
cuando simplemente desea ejecutar algún programa / script que no se escribió originalmente como daemon en segundo plano. Sin embargo, si tiene la intención de interactuar con el multiplexor terminal, lo recomiendo encarecidamente tmux
.
su
osudo
?