Como retornar “on” ou “off” para: chkconfig --list | grep httpd

4

Para garantir que o httpd seja iniciado automaticamente na reinicialização. Eu simplesmente executo esse comando

chkconfig httpd on

o que estou procurando é uma maneira de saber se isso a configuração é

on or off

em vez deste comando

chkconfig --list | grep httpd

que retorna isso

httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

Eu entendo sobre os níveis, mas realmente o que eu preciso é

 on or off

para que eu possa inseri-lo em um script e visualizar visualmente ou desativado diariamente, em vez de algo complexo como acima.

    
por user70804 07.06.2014 / 15:58

3 respostas

4

da página man:

 By  default,  the on and off options affect only runlevels 2, 3, 4, and
   5, while reset and resetpriorities affects all of the  runlevels.   The
   --level option may be used to specify which runlevels are affected.

para que você possa usar awk para extrair apenas esses níveis (2,3,4,5):

chkconfig --list | grep httpd | awk '{ print $4 }' | cut -d ':' -f 2

e faça o mesmo para outros níveis (3,4,5) substituindo $4 por ( $5 , $6 , $7 )

    
por 07.06.2014 / 16:13
2

chkconfig na verdade apenas coloca links simbólicos para os serviços init-scripts normalmente encontrados em /etc/init.d. Então ao invés de grepping und awk'ing a saída do chkconfig você pode apenas verificar a existência do link simbólico.

Quando eu faço um chkconfig httpd on , ele cria um link chamado /etc/rc3.d/S85httpd , apontando para o init.d. chkconfig httpd off remove esse link (e faz mais, mas isso é bastante irrelevante aqui). Isso pode depender da distribuição.

Então no bash você pode fazer [ -f /etc/rc3.d/S85httpd ] , e se o valor de retorno ( $? ) for 0, o link existe. Se é 1, isso não acontece, por isso é desativado.

    
por 08.06.2014 / 04:12
1

As respostas fornecidas incorporam o runlevel no script, enquanto a pergunta parece pedir um único "on" ou "off", indicando que é para o atual runlevel .

Também parece que o fato de chkconfig aceitar um argumento foi ignorado, fazendo com que um grep redundante.

Além disso, seu formato é consistente, sempre colocando o nível de execução antes dos itens de ativação / desativação em sua listagem. Não é necessário contar colunas (e incorporar isso no trabalho que se deve fazer para usar a solução).

Tendo isso em conta, aqui está um script que imprime "on" ou "off" para cada serviço no nível de execução atual:

#!/bin/sh
THIS=$(runlevel | sed -e 's/^. //')
for svc in "$@"
do
  chkconfig --list $svc 2>/dev/null | sed -e 's/^.*'$THIS'://' -e 's/[[:space:]].*//'
done
    
por 30.10.2015 / 02:14