Я пытаюсь запустить conky с помощью gksudo (чтобы получить преимущество среди всех процессов, а не только у меня), но у меня действительно странная проблема. Несмотря на то, что conky разветвляется и выходит немедленно, gksudo не выходит одновременно. Если я закрою его с помощью Ctrl+C, conky продолжит работать, что доказывает, что он успешно разветвился. Как я могу заставить gksudo увидеть, что процесс, который он начал, закончился, и вернуть мне мою оболочку?
2 ответа
Когда conky разветвляется и выходит, родительский процесс, созданный gksudo, будет продолжать работать как процесс зомби.
В Unix и Unix-подобных компьютерных операционных системах процесс зомби или несуществующий процесс - это процесс, который завершил выполнение, но все еще имеет запись в таблице процессов. Эта запись по-прежнему необходима, чтобы процесс, запустивший (теперь зомби) процесс, мог прочитать его состояние выхода. Термин «зомби-процесс» происходит от общего определения зомби - нежити. В красочной метафоре термина дочерний процесс умер, но еще не был пожнен.
Пока этот процесс присутствует, gksudo будет продолжать работать. С его справочной страницы:
После успешного выполнения программы возвращаемое значение из sudo будет просто возвращаемым значением программы, которая была выполнена.
Если вы работаете в интерактивном режиме, запустите его в фоновом режиме, как это предлагается, и для неинтерактивного использования предоставьте root-права для conky или сценария оболочки через файл /etc /sudoers.
Изменить: Используя пример gvim в другом ответе:
$ #gksudo running
$ ps -ef | grep gvim
171:nagul 22876 9378 0 12:18 pts/1 00:00:00 gksudo gvim
172:root 22877 22876 0 12:18 ? 00:00:00 [gvim] <defunct>
176:root 22892 1 0 12:18 ? 00:00:00 gvim
$ #gksudo killed via Ctrl-C
$ ps -ef | grep gvim
174:root 22892 1 0 12:18 ? 00:00:00 gvim
Мне кажется, что Гксудо никогда не делает этого. Например, gvim вернет вам рабочую оболочку, когда вы ее запустите. Но запуск с помощью gksudo заблокирует оболочку.
Самое простое, что вы можете сделать, это запустить его в фоновом режиме:
gksudo conky &