मैं कोशिश कर रहा हूँ करने के लिए संलग्न करने के लिए एक लाइन मेरे crontab फ़ाइल. मैं जानता हूँ कि वहाँ अन्य तरीकों से इस समस्या को हल, लेकिन अभी भी चाहते हैं पता करने के लिए यह क्या कारण है. कमांड चलाने पर रास्पबेरी pi 3 बी+, raspbian लाइट स्थापित है, के साथ जीएनयू एड 1.15, क्रॉन 3.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 समस्या का समाधान नहीं है. तो मुझे लगता है कि यह है के साथ समस्या क्रॉन.
हैरत की बात है, जब मैं दे एड कमानों कुंजीपटल से सीधे के बजाय, यह स्ट्रीमिंग के लिए, यह सिर्फ काम करता है. शायद subshell निर्माण के कारण समस्या है?
मैं यहाँ संलग्न कर रहा हूँ कुछ की आखिरी लाइनों में से 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)
लग रहा है एक बिट संदिग्ध है, लेकिन नहीं यकीन है कि क्यों यह खोलता है फ़ाइल केवल-पढ़ने के लिए.
संपादित करें:
के रूप में सुझाव दिया द्वारा @tink, मैं भागा EDITOR=ed strace crontab -e
देखने के लिए क्या strace
देता है पर एक इंटरैक्टिव सत्र. परिणाम लगभग एक ही (केवल अलग-अलग पर पीआईडी और एफडी की संख्या).
मैंने देखा है कि चल रहा है echo "..." | EDITOR=ed crontab -e
के साथ बाहर निकल गया संदेश No modification made
लेकिन strace
प्रक्रिया रुकती के बिना किसी भी संदेश है । (EDITOR=ed strace crontab -e 2>&1 | grep "No mod"
प्रिंट कुछ भी नहीं). लगता है strace ट्रिगर विभिन्न त्रुटियों.
/dev/fd/63: Not a regular file.
हो सकता है कुछ सिस्टम विन्यास अलग हो सकता है?