shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Verificar se Script está sendo executado de linha de


From: Cléoson Barreto
Subject: Re: [shell-script] Verificar se Script está sendo executado de linha de comando ou de interface gráfica
Date: Thu, 28 Feb 2013 19:01:55 -0300

Olá!

    Tentei bolar um teste assim:

- Criei este script:
--------------------------------------------------
$ cat ./script.sh
#!/bin/bash

# Mostra o PID deste script
echo "PID deste script: $$"
read

# Chama o dialog
dialog --inputbox "Texto" 24 48
read
--------------------------------------------------

     Ao executar o script, a primeira coisa que ele mostra é o PID do
script. De posse dessa informação, antes de dar "enter" para seguir a
execução do script, utilizei o comando pstree em outro terminal:
$ pstree -p 11785
script.sh(11785)

     Ou seja, me mostrou que existe um processo chamado "script.sh".
Depois, dei o "enter" para seguir o script, e executei novamente o comando
pstree no outro terminal:
$ pstree -p 11785
script.sh(11785)───dialog(11788)

     Resumindo, quando o dialog foi chamado, essa informação apareceu no
comando pstree como um processo filho do processo do script (nesse caso,
11785).

     Entendeu a ideia?

-- 
[]'s
Cléoson.


Em 28 de fevereiro de 2013 18:14, Alfredo Casanova
<address@hidden>escreveu:

> Não sei como fazer, é uma sugestão de "brainstorm"
> mas eu pensaria em algo relativo ao processo pai do seu script
>
>
> 2013/2/28 André Saunite <address@hidden>
>
> > **
> >
> >
> > Valeu Leslie,
> >
> > Mas no meu caso, se eu tenho o ambiente gráfico aberto, o $TERM tá
> > sempre como xterm, e oDISPLAY é :0 tanto eu executando por linha de
> > comando quanto clicando no script pra executar pela GUI.
> >
> > Abraço!
> > André Saunite
> >
> >
> > On 02/28/2013 07:33 AM, Leslie Watter wrote:
> > > Além da dica do Thiago (verificar o $TERM),
> > >
> > > /dev/ttyS* == terminal texto
> > > /dev/pty*.... == pode ser um terminal texto ou conectado via ssh
> > >
> > > você também pode verificar se a variável DISPLAY está ativa.
> > >
> > > Se estiver com valor diferente de "" é sinal que tem um ambiente
> gráfico
> > > associado, ai vc pode usar o zenity, kdialog etc e o teste fica bem
> mais
> > > fácil
> > >
> > >
> > > if [ "$DISPLAY"x == ""x ]; then
> > > $ECHO=echo
> > > else
> > > $ECHO=kdialog
> > > fi
> > >
> > > .....
> > >
> > >
> > > []s
> > >
> > > Leslie
> > >
> > >
> > > 2013/2/27 André Saunite address@hidden>
> > >
> > >> **
> > >>
> > >>
> > >> Opa Julio,
> > >>
> > >> Não é bem isso não, o que eu quero é executar um script, e esse script
> > >> tem que passar algumas mensagens para o usuário (se terminou bem, se
> > >> teve problema).
> > >>
> > >> Só quemeu script pode ser invocado por linha de comando (./script.sh)
> ou
> > >> via interface gráfica(clicando no script.sh em um gerenciador de
> arquivo
> > >> para que ele execute)
> > >>
> > >> Se eu só coloco "echo"nenhuma mensagem vai aparecer quando eu inicio o
> > >> script viainterface gráfica, então eu queria alguma forma de que o
> > >> script possa detectar se está sendo iniciado por interface gráfica ou
> > >> por linha de comando.
> > >>
> > >> Como eu uso atualmente a parte gráfica só como menu de contexto no
> > >> dolphineu só estou passando um argumento a mais pra saber que é
> > >> interface gráfica, mas eu não gosto dessa solução, e ela não vai
> > >> funcionar em um script que eu tenha que clicar para executar, sem
> poder
> > >> passar parâmetros.
> > >>
> > >> Espero que eu tenha deixado a coisa mais clara!
> > >>
> > >> Abraços!
> > >> André Saunite
> > >>
> > >>
> > >> On 02/27/2013 05:29 PM, Julio C. Neves wrote:
> > >>> Fala André,
> > >>> não entendi bem a sua pergunta, mas veja se é isso:
> > >>>
> > >>> $ function AchaProc1
> > >>> {
> > >>> Qtd=$(ps -eo comm | grep "^$1$") || {
> > >>> echo Nenhum processo $1 em execução
> > >>> return 1
> > >>> }
> > >>> echo "Existe(m) $(wc -l <<< "$Qtd") instância(s) de $1 em execução"
> > >>> }
> > >>> $ AchaProc1 ximelesquete
> > >>> Nenhum processo ximelesquete em execução
> > >>> $ AchaProc1 bash
> > >>> Existe(m) 8 instância(s) de bash em execução
> > >>>
> > >>> Agora com zenity:
> > >>>
> > >>> $ function AchaProc2
> > >>> {
> > >>> Qtd=$(ps -eo comm | grep "^$1$") || {
> > >>> zenity --error --text "Nenhum processo *$1* em execução"
> > >>> return 1
> > >>> }
> > >>> zenity --info --text "Existe(m) *$(wc -l <<< "$Qtd")* instância(s)
> > >>> de *$1* em execução"
> > >>> }
> > >>>
> > >>> Abcs,
> > >>> Julio
> > >>> *@juliobash*
> > >>>
> > >>> *Próximos Cursos de Shell*
> > >>>
> > >>> *Cidade*
> > >>>
> > >>> *Data Início*
> > >>>
> > >>> *Local*
> > >>>
> > >>> Curitiba
> > >>>
> > >>> 04/03
> > >>>
> > >>> SoftSell
> > >> http://www2.softsell.com.br/?system=treinamentos&id=323&action=read>
> > >>
> > >>> Recife
> > >>>
> > >>> 01/04
> > >>>
> > >>> Fuctura http://www.fuctura.com.br/cursos/curso-de-shell-scripts/>
> > >>>
> > >>>
> > >>>
> > >>> Em 27 de fevereiro de 2013 14:53, André Saunite address@hidden
> > >>> escreveu:
> > >>>
> > >>>> **
> > >>>>
> > >>>>
> > >>>> Oi galera,
> > >>>>
> > >>>> É possível saber se um script está sendo executado pela linha de
> > comando
> > >>>> ou por uma interface gráfica? Eu gostaria de fazer essa comparação
> > >>>> dentro de um shell script (em bash) pra decidir se uso um zenity /
> > >>>> kdialog ou um echo quando estiver mostrando as mensagens do script.
> > >>>>
> > >>>> Abraços,
> > >>>> André Saunite
> > >>>>
> > >>>>
> > >>> [As partes desta mensagem que não continham texto foram removidas]
> > >>>
> > >>>
> > >>>
> > >>> ------------------------------------
> > >>>
> > >>> ----------------------------------------------------------
> > >>> Esta lista não admite a abordagem de outras liguagens de programação,
> > >> como perl, C etc. Quem insistir em não seguir esta regra será moderado
> > sem
> > >> prévio aviso.
> > >>> ----------------------------------------------------------
> > >>> Sair da lista: address@hidden
> > >>> ----------------------------------------------------------
> > >>> Esta lista é moderada de acordo com o previsto em
> > >> http://www.listas-discussao.cjb.net
> > >>> ----------------------------------------------------------
> > >>> Servidor Newsgroup da lista: news.gmane.org
> > >>> Grupo: gmane.org.user-groups.programming.shell.brazil
> > >>>
> > >>> Links do Yahoo! Grupos
> > >>>
> > >>>
> > >> [As partes desta mensagem que não continham texto foram removidas]
> > >>
> > >>
> > >>
> > >
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
>
>
> --
> []'s
> Alfredo Casanova
> Linux User #228230
> msn: address@hidden
> tel: +55 61 9655 9619
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]