AIX에서 기존 PID의 STDIN에 문자열을 보내는 방법이 있습니까?

AIX에서 기존 PID의 STDIN에 문자열을 보내는 방법이 있습니까?

몇 가지 컨텍스트를 제공하기 위해 단일 rm file.txt명령으로 AIX에서 ksh 스크립트를 실행합니다. 문제는 파일이 공유 그룹이 소유하지만 다른 사용자가 소유하므로 스크립트 rm명령에서 확인을 요청한다는 것입니다.

따라서 rm명령은 파일 삭제 확인을 기다리고 있으며 명령줄(from)에서 실행되고 있으므로 y다른 스크립트에서 실행되고 있으므로nSTDIN비대화형그건 그렇고, 우리에겐 방법이 없어입력하다그 안에 가치가 있습니다.

우리는 다양한 옵션을 검색했지만 모든 콘텐츠는 Linux 또는 Solaris용이었습니다. 우리의 관심을 끌었던 한 가지는해결책Linux의 경우 PID의 STDIN 파일 설명자 값을 재정의하는 작업이 포함됩니다. 이는 이론적으로는 타당하지만 안타깝게도 실제로 AIX에서는 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

우리는 결국 PID 45023400을 죽이게 되었지만, 이것이 일어날 때 유일한 해결책은 아닐 것이라고 확신합니다... 그래서 제 질문은 다음과 같습니다:어떤 방법이 있나요?보내다AIX의 기존 PID에 대한 STDIN 문자열이요?

Linux 포럼의 지침에 따라 에코를 위 PID의 STDIN에 해당하는 파일 설명자로 리디렉션할 수 있지만 이 경우에는 작동하지 않습니다.

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

Permission denied파일 설명자가 존중하지 않는다는 점을 고려하면 괜찮다고 생각되는 오류가 발생했습니다.정상파일에 대한 mod 규칙...또는 적어도 AIX에서는 그렇지 않습니다. :(

답변1

나는 rm -f그것이 당신에게 유용할 것이라고 생각합니다:

   -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.

관련 정보