ps -o args= -p "$pid"
Le indicará la lista de argumentos dada al último comando que ejecutó el proceso (o si no ejecutó ninguno, el que ejecutó su padre ...) siempre que el proceso no anule su lista de argumentos después.
psmostrará esa lista arg concatenada con espacios y hasta un límite que puede aumentar con algunas psimplementaciones agregando un par de -wopciones). En Linux, puede ver el arglista separado por bytes NUL en /proc/$pid/cmdline.
lsof +fg -ap "$pid" -d 0-2
Le dirá a qué apuntan los descriptores de archivos stdin, stdout y stderr del proceso y el modo en que se abrieron (como W,APpara solo escritura con agregar como si >>se usara una redirección en un shell POSIX).
lsofpara detectar que el proceso se está redirigiendo amyapp.logreadlink /proc/$pid/fd/1Puede usar el
pscomando y especificar el pid para examinar con el-pmodificador, utilizando el-fmodificador para obtener una lista completa o-luna lista larga más detallada.Como ejemplo de salida:
Sin embargo, esto genera una línea de encabezado, que quizás no desee en su archivo de registro. Puede recortar esto usando la
-hopción, si su pid fue 1234:Tenga en cuenta que he redirigido la salida usando
>>para agregar a su archivo de registro.fuente
tail -n+1(requiere GNU, pero Q era Linux / Ubuntu). O evite el problema conps -h{f,l}p 1234(también GNU).tail -n1definitivamente funciona en Ubuntu, ¿por qué es+necesario?tail -n+2qué muestra todas las líneas excepto la primera.tail -n1muestra solo la última línea. Compare:seq 1 10 | tail -n+2y así sucesivamente.-hya que evita una tubería innecesaria y un proceso adicional.Utilizando
ps -fpuede verificar la lista de argumentos y también puede redirigirla a cualquier archivo.Entonces, en este caso solo use
ps -ef | grep 1234 > myapp.logPor favor, consulte esta página de manual de ps .
fuente
ps -ef | grep 'foo' | grep -v grepgrep -v, uso este truco:grep '123[4]'