Crontab ed 명령에 의하여,스트림에 결과에서"아무 수정"

0

질문

내가 노력하고 추가 줄을 내 crontab 파일입니다. 내가 알고있는 다른 방법으로 이 문제를 해결,하지만 여전히 원인을 알고 싶습니다. 명령을 실행하에 raspberry pi3B+,raspbian 에이트 라이트를 설치된 GNU ed1.15,cron3.0pl1-134+deb10u1.

는 명령을 내가 붙은 이것입니다:

$ echo -e 'a\n#asdf\n.\nwQ' | EDITOR=ed crontab -e
902
909
No modification made

나는 그것을 기대를 추가할인 #asdf 의 끝에서 내 crontab 파일이지만,그렇지 않습니다.

설정 EDITOR='tee -a' 제안서 https://stackoverflow.com/a/30123606/8842387 해결되지 않는 문제입니다. 그래서 나는 그것이 문제 cron.

이상하게도,내 ed 명령에서 직접 키보드보다 스트리밍에 그것은,그것은 단지 작동합니다. 어쩌면 이 매개변수를 참조 작성해 발생하는 문제입니까?

여기에 나를 부착 약간의 마지막 라인에서 strace 결과입니다.

$ echo -e 'a\n#asdf\n.\nwQ' | EDITOR=ed strace crontab -e
execve("/usr/bin/crontab", ["crontab", "-e"], 0x7ee54c14 /* 29 vars */) = 0
access("/etc/suid-debug", F_OK)         = -1 ENOENT (No such file or directory)
...
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\7\0\0\0\0"..., 4096) = 659
_llseek(3, -393, [266], SEEK_CUR)       = 0
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\7\0\0\0\0"..., 4096) = 393
close(3)                                = 0
getpid()                                = 18579
socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = 0
send(3, "<78>Nov 20 15:31:25 crontab[1857"..., 56, MSG_NOSIGNAL) = 56
openat(AT_FDCWD, "crontabs/pi", O_RDONLY) = -1 EACCES (Permission denied)
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=2995, ...}) = 0
read(4, "# Locale name alias data base.\n#"..., 4096) = 2995
read(4, "", 4096)                       = 0
close(4)                                = 0
openat(AT_FDCWD, "/usr/share/locale/en_GB.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_GB.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_GB/LC_MESSAGES/libc.mo", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=1433, ...}) = 0
mmap2(NULL, 1433, PROT_READ, MAP_PRIVATE, 4, 0) = 0x76f50000
close(4)                                = 0
openat(AT_FDCWD, "/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "crontabs/pi/: fdopen: Permission"..., 39crontabs/pi/: fdopen: Permission denied) = 39
exit_group(1)                           = ?
+++ exited with 1 +++

openat(AT_FDCWD, "crontabs/pi", O_RDONLY) = -1 EACCES (Permission denied) 보 의심스러운,그러나 확실하지 않은 왜 그것을 열고 파일 읽기 전용입니다.

편집: 에 의해 제안@팅크,I ran EDITOR=ed strace crontab -e 무엇을 보고 strace 제공하는 세션이 있습니다. 결과 거의 동일(단 변화에 pid 및 fd 번호).

는 것으로 나타났 실행 echo "..." | EDITOR=ed crontab -e 종료 메시지 No modification madestrace 프로세스 중단없이 메시지입니다. (EDITOR=ed strace crontab -e 2>&1 | grep "No mod" 인쇄 아무것도). Guess strace 트리거는 다른 오류가 있습니다.

bash cron ed linux
2021-11-20 06:41:51
1

최고의 응답

0

에 다음과 같은 내 VISUAL 석,이러한 나를 위해 일했:

( unset VISUAL; printf '%s\n' a '#abcd' . wq | EDITOR=ed crontab -e )
printf '%s\n' a '#abcd' . wq | VISUAL=ed crontab -e

환경에서,모두 시각과 편집기 설정"vim"

또,더 원형 교차로이지만,필요가 없는 원숭이와 함께 환경변수. 이 중 하나는 또한 당신이 그것을 할 자동:

crontab <(printf '%s\n' a '#asdf' . '%p' | ed -s <(crontab -l))

하고 있었다 위에 맥. 리눅스에서,내가 할 수 있습을 재현하는 관찰하지만,설명할 수 없습니다.

조정할 작은 마지막 명령을 사용:

printf '%s\n' a '#asdf' . '%p' Q | ed -s <(crontab -l) | crontab -
2021-11-21 20:34:51

답변 감사합니다! 나는 두려워 말하는 것도 위의 두 줄은 나를 위해 일했고 마지막 제공 /dev/fd/63: Not a regular file. 아마 어떤 시스템 구성이 다를 수 있습니까?
bivoje

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................