Я думаю, что ваш системный python по умолчанию - Python3.x, наберите
$ which python
$ which guake
/usr/bin/guake
и измените #! /usr/bin/python
в /usr/bin/guake
на #! /usr/bin/python2.7
. Обратите внимание, что guake может быть запущен только на Python2.x, а pygtk поддерживает только Python2.x.
Используя ps -f
, вы можете проверить список аргументов, а также перенаправить его в любой файл.
Итак, в этом случае просто используйте ps -ef | grep 1234 > myapp.log
Пожалуйста, проверьте эту ps man страницу.
Вы можете использовать команду ps
и указать pid для изучения с помощью ключа -p
, используя ключ -f
для полного списка или -l
для более подробного длинного списка.
В качестве примера вывода:
$ sleep 60 &
[1] 31441
$ ps -lp 31441
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 31441 31319 0 80 0 - 1423 hrtime pts/3 00:00:00 sleep
$ ps -fp 31441
UID PID PPID C STIME TTY TIME CMD
root 31441 31319 0 10:44 pts/3 00:00:00 sleep 60
Однако в этом случае выводится строка заголовка, которую вы, возможно, не хотите видеть в своем файле журнала. Вы можете сократить ее, используя опцию -h
, если ваш pid был 1234:
ps -lhp 1234 >> /var/log/myapp/myapp.log 2>&1
Обратите внимание, что я перенаправил вывод с помощью >>
для добавления в ваш лог-файл.
ps -o args= -p "$pid"
Сообщит вам список аргументов, переданный последней команде, которую выполнял процесс (или, если он не выполнял никакой, той, которую выполнял его родитель ...), при условии, что процесс не переопределил свой список аргументов впоследствии.
ps
покажет, что список arg объединен с пробелами до предела, который вы можете увеличить с помощью некоторых реализаций ps
, добавив пару -w
параметры). В Linux вы можете увидеть список аргументов, разделенных байтами NUL, в / proc / $ pid / cmdline
.
lsof +fg -ap "$pid" -d 0-2
Сообщит вам, на что указывают файловые дескрипторы stdin, stdout и stderr процесса и в каком режиме они были открыты (например, W, AP
для записи только с добавлением, как если бы > >
перенаправление использовалось в оболочке POSIX).