몇 가지 컨텍스트를 제공하기 위해 단일 rm file.txt
명령으로 AIX에서 ksh 스크립트를 실행합니다. 문제는 파일이 공유 그룹이 소유하지만 다른 사용자가 소유하므로 스크립트 rm
명령에서 확인을 요청한다는 것입니다.
따라서 rm
명령은 파일 삭제 확인을 기다리고 있으며 명령줄(from)에서 실행되고 있으므로 y
다른 스크립트에서 실행되고 있으므로n
STDIN
비대화형그건 그렇고, 우리에겐 방법이 없어입력하다그 안에 가치가 있습니다.
우리는 다양한 옵션을 검색했지만 모든 콘텐츠는 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.