2010-10-03 13 views
6

En Perl estoy comenzando un proceso usando el comando nohup. El comando está debajo:¿Cómo puedo suprimir la salida del sistema cuando uso nohup desde Perl?

system("nohup myproc pe88 &"); 

Esto funciona bien y el proceso comienza como se esperaba. Sin embargo, me gustaría suprimir la siguiente salida de este comando - que es:

Sending output to nohup.out 

que debe tener este proceso redirigir todos los de su salida a nohup.out pero simplemente no quiero que aparece cuando corro mi Programa Perl. En su lugar, quiero imprimir mi propio mensaje fácil de usar. He intentado algunas variantes pero nada me ha funcionado todavía.

Respuesta

4

"Sending output to nohup.out" mensaje is sent to STDERR, por lo que se puede coger el STDERR a través de los métodos habituales

  • ya sea a través de la shell: system("nohup myproc pe88 2> /tmp/error_log.txt &");

    Uso /dev/null en lugar de /tmp/error_log.txt si no es necesario stderr en absoluto; y agregue "> /tmp/myout.txt" para redirigir stdout.

  • O mediante la captura a través de Perl (no utilice system() llamada, en lugar de utilizar IPC::Open3 o capture command from IPC::System::Simple)

+2

Tenga en cuenta que simplemente capturando el STDERR, nohup ni siquiera imprime el mensaje "enviando salida a nohup.out". –

5

¿Qué tal:

system("nohup myproc pe88 >nohup.out 2>&1 &"); 

La página del manual para nohup dice:

Si la salida estándar es una terminal, ap pend salida a 'nohup.out' si es posible, '$ HOME/nohup.out' en caso contrario. Si el error estándar es una terminal, redirija a la salida estándar. Para guardar salida en ARCHIVO, use `nohup COMANDO> ARCHIVO '.

Así que si redirige explícitamente STDOUT y STDERR a nohup.out, entonces nohup no imprime ese mensaje. De acuerdo, no obtiene el respaldo automático de $ HOME/nohup.out si nohup.out no es escribible, pero puede verificarlo primero si eso es un problema.

Tenga en cuenta que si redirige solo STDOUT, nohup imprime un mensaje de "redireccionamiento de stderr a stdout".

Cuestiones relacionadas