Crontab के साथ प्रवर्तन निदेशालय के आदेशों द्वारा धारा पर, परिणाम में, "कोई संशोधन किया"

0

सवाल

मैं कोशिश कर रहा हूँ करने के लिए संलग्न करने के लिए एक लाइन मेरे 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 ट्रिगर विभिन्न त्रुटियों.

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

सबसे अच्छा जवाब

0

निम्नलिखित पर विजुअल टिप्पणी है, ये मेरे लिए काम किया:

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

मेरे वातावरण में, दोनों के दृश्य और संपादक रहे हैं सेट करने के लिए "vim"

या, और अधिक राउंडअबाउट है, लेकिन करने की जरूरत नहीं है के साथ बंदर लि vars. यह भी अनुमति देता है आप इसे करने के लिए चुपचाप:

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

मैं कर रहा था ऊपर, एक मैक पर. लिनक्स पर, मैं पुन: पेश कर सकते हैं, अपनी टिप्पणियों, लेकिन नहीं कर सकते हैं उन्हें समझाने.

एक छोटी सी tweak करने के लिए अंतिम आदेश काम करता है:

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

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में