Czy istnieje limit znaków, którym może być polecenie w tabeli przestawnej?
Mam plik crontab z poleceniem składającym się ze 178 znaków i wydaje się, że został obcięty przy 164 po wykonaniu. Mogę odróżnić ten numer od otrzymanego e-maila i od kolorów vi zmieniających się od tego momentu.
Czy to jest „oficjalne” ograniczenie? Nie mogę znaleźć żadnej dokumentacji na ten temat.
Odpowiedzi:
Wow, znalazłem mój problem i nie miało to nic wspólnego z długością linii.
Okazuje się, że moje polecenie zawierało% (znak procentu), co ma specjalne znaczenie w crontab. Służy do wprowadzania tekstu do STDIN (zobacz Dlaczego mój crontab nie działa i jak mogę go rozwiązać? ).
Musiałem więc uciec. Moje polecenie, które brzmiało:
staje się
źródło
%
konsternację wywołał kilka godzin!Doświadczalnie na wszystkich moich komputerach z systemem Ubuntu występuje obcięcie 999 znaków na linię, chociaż nie znalazłem jeszcze żadnej powiązanej dokumentacji wyjaśniającej.
Testowałem na Ubuntu 10.04, 12.04 i 14.04 i liczenie 999 znaków rozpoczyna się od pierwszego znaku spoza spoza harmonogramu (w moim przykładzie harmonogram jest
* * * * *
równy 1 raz na minutę).Przestrzegać:
Najpierw policzymy znaki polecenia, które dodamy do naszej tabeli - bez harmonogramu :
Dodaj to polecenie do naszego crontab, aby uruchamiać co minutę: (OSTRZEŻENIE to zastępuje wszelkie istniejące wpisy crontab dla odpowiedniego użytkownika)
Poczekaj minutę, sprawdź, czy utworzono
/tmp/test.log
plik zawierający wszystkie „a”:Zacznij od nowa, usuń plik crontab i plik dziennika:
Dodaj to samo polecenie co poprzednio, tylko 1 znak dłużej (w moim przypadku
B
):/tmp/test.lo
utworzonej za pomocą „a”. Wynika to z tego, że 1000 znak został obcięty.Aby potwierdzić, usuń dodane
B
i zamiast tego dodaj a1
do nazwy pliku, tak jak:/tmp/test1.lo
zostanie utworzony za pomocą „a”./bin/echo
do/usr/bin/echo
i okaże się, że będziesz musiał usunąć dodatkowe 4 znaki z polecenia.źródło
cron
na moim Ubuntu 14.04 cicho obcina polecenie do 999 znaków. To takie szalone, zajęło mi to trochę czasu, aby go strawić. Wydaje się, że jest to jedyne miejsce w Internecie, w którym można to udokumentować, z 1 pozytywnym wynikiem.... && stop-power-plant; start-power-plant
a cron po prostu cicho odcina; start-power-plant
/bin/sh: 1: Syntax error: Unterminated quoted string
, ale nic nie gwarantuje tego.