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: (