Existe uma maneira de enviar uma string para o STDIN de um PID existente no AIX?

1

Para fornecer um contexto, há um script ksh em execução no AIX que contém uma instrução rm file.txt - o problema é que o arquivo, pertencente a um grupo compartilhado, mas por outro usuário, tornou o comando rm do script como pedir confirmação ...

Portanto, o comando rm estava aguardando confirmação para excluir um arquivo, esperando um y ou n da linha de comando (de STDIN ) e, como isso estava sendo executado em outro script, em uma maneira não interativa , não tivemos como digitar um valor lá.

Pesquisamos as diferentes opções que tínhamos, mas tudo o que havia para o Linux ou Solaris - uma coisa que chamou nossa atenção foi uma solução para o Linux, que envolveu a sobrescrita do valor do arquivo STDIN do PID Descritor, que faz muito sentido na teoria, mas infelizmente, na prática, isso não está funcionando no AIX da mesma forma que funciona no Linux.

foo@bar - /my/dir $ ps -fT 45023400
     UID      PID     PPID   C    STIME    TTY  TIME CMD
  foo 45023400 16449852   0 11:38:50 pts/17  0:00 /usr/bin/perl script1.pl
  foo  1507590 45023400   0 11:38:50 pts/17  0:00     \--/bin/sh script2.sh
  foo 50987084  1507590   0 11:38:51 pts/17  0:00         \--rm file.txt

Acabamos de matar PID 45023400, mas tenho certeza de que essa não pode ser a única solução quando isso acontece ... então minha pergunta é: Existe uma maneira de enviar uma string para o STDIN de um PID existente no AIX?

De acordo com as instruções nos fóruns do Linux, você pode redirecionar um eco para o correspondente do Descritor de Arquivo ao STDIN para o PID mencionado anteriormente, mas isso não funcionou nesse caso:

foo@bar - /my/dir $ ls -l /proc/50987084/fd/
total 0
c---------    1 foo   cm           24, 17 Mar  8 13:43 0
p---------    0 foo   cm                0 Mar  8 11:38 1
p---------    0 foo   cm                0 Mar  8 11:38 2

foo@bar - /my/dir $ echo n > /proc/50987084/fd/0
Permission denied
ksh: /proc/50987084/fd/0: cannot create

Recebemos um erro Permission denied , o que eu acho que está correto, considerando que os descritores de arquivo não obedecem às regras mod dos arquivos comuns ... ou pelo menos não no AIX: (

    
por jimm-cl 08.03.2017 / 23:33

1 resposta

1

Acho que rm -f pode fazer o truque para você:

   -f
        Does not prompt before removing a write-protected file. Does not display an error message or return error status if
        a specified file does not exist. If both the -f and -i flags are specified, the last one specified takes affect.
    
por 16.03.2017 / 17:16