Por que o gksudo não sai após iniciar o processo em segundo plano?

0

Estou tentando executar o conky com o gksudo (para ficar no topo de todo o processo, não apenas no meu), mas tenho um problema muito estranho. Apesar do fato de que o conky se bifurca e sai imediatamente, o gksudo não sai ao mesmo tempo. Se eu fechá-lo com o Ctrl + C continue a rodar, o que prova que ele foi bifurcado com sucesso. Como posso fazer o gksudo ver que o processo iniciado acabou e me devolver minha concha?

    
por vava 30.08.2009 / 11:58

2 respostas

2

Quando o conky se auto-intitula e sai, o processo pai que gksudo criou continuará sendo exibido como um processo zumbi .

On Unix and Unix-like computer operating systems, a zombie process or defunct process is a process that has completed execution but still has an entry in the process table. This entry is still needed to allow the process that started the (now zombie) process to read its exit status. The term zombie process derives from the common definition of zombie—an undead person. In the term's colorful metaphor, the child process has died but has not yet been reaped.

Enquanto este processo estiver presente, o gksudo continuará a ser executado. De sua página de manual:

Upon successful execution of a program, the return value from sudo will simply be the return value of the program that was executed.

Se você estiver executando isso de forma interativa, execute-o em segundo plano, conforme sugerido, e para uso não interativo, dá permissão root ao conky ou ao script wrapper através do arquivo / etc / sudoers .

Editar: Usando o exemplo gvim na outra resposta:

$ #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
    
por 30.08.2009 / 13:26
0

Parece-me que o gksudo nunca faz isso. Por exemplo, o gvim lhe dará um shell de trabalho quando você o iniciou. Mas iniciá-lo com o gksudo irá bloquear o shell.

A melhor coisa que você pode fazer é executá-lo em segundo plano:

gksudo conky &
    
por 30.08.2009 / 12:10