status não reconhece a opção '-p' no Ubuntu

1
status -p $pidfile -l $lockfile $prog

Este comando funciona no shell CentOS - / bin / sh.

Mas quando eu tento executar o mesmo comando no Ubuntu 14.04 com /bin/bash shell (ou zsh também), ele gera um erro,

status: invalid option: -p
Try 'status --help' for more information.

Como podemos passar o argumento de localização do pidfile para o comando status no Ubuntu?

    
por Madhavan Kumar 11.05.2015 / 05:57

2 respostas

3

status -p $pidfile -l $lockfile $prog

Essa é a função status() do shell de /etc/rc.d/init.d/functions no RHEL / CentOS 6. Ela também é conhecida como statusproc() no mundo Linux From Scratch .

Isso nos diz que você está fazendo coisas muito erradas. Você está combinando as funções auxiliares de shell especiais disponíveis para uso nos scripts System 5 rc com comandos externos de shell interativos comuns. Você está escrevendo scripts System 5 rc no Ubuntu. E você está usando arquivos PID e arquivos de bloqueio.

  • Não use arquivos PID como rastreamento de serviço do homem pobre. Não use arquivos de bloqueio como intertravamento de serviço do homem pobre. Eles são totalmente desnecessários nas versões 14 e 15 do Ubuntu Linux, que têm upstart e systemd, respectivamente. Eles não precisam de arquivos PID instáveis e arquivos de bloqueio. Tanto o systemd quanto o upstart garantem que não se inicie um único serviço duas vezes, e os dois controlam adequadamente os IDs do processo dos processos de serviço, porque eles, em primeiro lugar, bifurcaram esses processos. O que me leva a:
  • Não escreva os scripts System 5 rc no Ubuntu Linux. Na versão 14, um já tinha upstart; e na versão 15 um agora tem systemd, assim como no CentOS 7, RHEL 7 e Debian 8. Não há uma boa razão para escrever scripts System% 5% no Ubuntu Linux por um longo tempo. E um certamente não deve começar a partir daí se alguém estiver vindo para o Ubuntu Linux novamente. Mesmo se você estiver começando por aí porque está (erroneamente) tentando trazer scripts do System 5 rc através do CentOS:
  • Não confie na função rc do shell nos sistemas operacionais ou mesmo nas versões do mesmo sistema operacional. Conforme observado, é diferentemente nomeado no LFS. Ele não está nas "novas" funções de suporte LSB do Fedora a partir de 2009. Não há nem mesmo uma ação de script obrigatória status() System 5 status no Manual de Políticas Debian em primeiro lugar, embora o A biblioteca de funções auxiliares do LSB tem uma função de ajuda (sutilmente diferente) rc .

Escreva um "arquivo de trabalho" upstart para o Ubuntu versão 14, ou uma "unidade de serviço" systemd para CentOS 7, RHEL 7, Debian 8 ou Ubuntu 15. Ambos upstart e systemd fornecem comandos de status de serviço: status_of_proc() (com um simples shim chamado apenas initctl status ) e status , respectivamente. Para apoiá-los em um arquivo de trabalho ou uma unidade de serviço você não precisa fazer nada .

Leitura adicional

por 11.05.2015 / 14:11
2

O status no CentOS 6.5 é a versão 0.6.5 do pacote upstart .
O status no Ubuntu 14.04 é a versão 1.12.1, também do pacote upstart .

Nenhuma dessas opções aceita a opção -p .

O Upstart status não permite que você especifique PIDFILE de alguma forma. Você pode especificar um job e fornecer os parâmetros key = value a serem passados para os scripts. As outras opções de linha de comando podem ser visualizadas com status --help .

No CentOS 7 não há status (pelo menos não na minha instalação), já que o CentOS 7 não usa mais o Upstart (tendo mudado para systemd). Você pode tentar descobrir qual pacote fornece o status no seu CentOS ( yum whatprovides $(which status) ) e ver se você pode instalar esse pacote no Ubuntu e assim obter um status alternativo (que também tem um nome diferente e sem conflito).

    
por 11.05.2015 / 09:38