Mac crontab nigdy nie jest tworzony

12

Próbuję skonfigurować crona na moim komputerze Mac, ale wygląda na to, że nigdy nie kończy tworzenia crontab dla mojego użytkownika. Otwieram terminal i wpisuję:

$ crontab -e 

Który zwraca to:

crontab: no crontab for jjmay - using an empty one




















~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
"/tmp/crontab.rBdeP6yv1U" 0L, 0C

A potem czeka tam, aż zamknę okno, pozwoliłem mu odejść na tak długo, jak 20 minut. Otwieram kolejne okno terminala, aby sprawdzić, czy utworzono mój plik crontab i nic nie dostaję.

$ crontab -l 
crontab: no crontab for jjmay

Jakieś pomysły na to, dlaczego nie mogę tego utworzyć lub czy mogę ręcznie utworzyć crontab, aby móc go edytować?

Jage
źródło
Minęło trochę czasu, odkąd pomyliłem się z plikami crontab w OS X, ale zgaduję, że to: „/tmp/crontab.rBdeP6yv1U” 0L, 0C oznacza, że ​​albo nie jesteś we właściwym katalogu, albo nie masz uprawnień do pisania do tego katalogu. W jakim katalogu się znajdujesz, pisząc „crontab -e”? JDB
JDB
@JDB dziękuję. Nie wiedziałem, że będę musiał znajdować się w określonym katalogu. Po prostu otworzyłem terminal w domyślnym katalogu, tylko w domyślnym katalogu użytkownika. / Users / <nazwa_użytkownika> /
Jage

Odpowiedzi:

22

Tu nie chodzi o edytor, chodzi o uprawnienia użytkownika. Najpierw root:

sudo su -

Następnie edytuj crontab dla odpowiedniego użytkownika:

crontab -u username -e

Po zapisaniu pliku można sprawdzić, czy został poprawnie zapisany, uruchamiając:

crontab -u username -l
platformy
źródło
1
To rozwiązanie działało dla mnie. Wariant, który nieoczekiwanie nie zadziałał, był dla mnie:sudo crontab -u username -e
Andrew Miner,
7

Właśnie napotkałem ten problem. Podczas próby rozwiązania problemu skierowano mnie tutaj z Google. Tak czy inaczej, oto jak to rozwiązałem.

posługiwać się

crontab -e

co dobrze zrobiliście.

Naciśnij „i”, aby wstawić cronjob. Na przykład,

1 * * * * /Users/Wong/Documents/abc.command

~

Pamiętaj, aby nacisnąć klawisz Return po linii. Jeśli nie naciśniesz return, będzie tak

1 * * * * /Users/Wong/Documents/abc.command

Naciśnij ESC i wpisz: wq, aby zapisać i zamknąć plik. Powinien brzmieć „crontab: instalowanie nowego crontab”

Uświadomiłem sobie, że jeśli nie naciśniesz return po linii, nie uratuje to całego.

Mam nadzieję, że to pomoże.

Richard Wong
źródło
Dzięki. Ciągle ekscytowałem się, :q!a twoje rozwiązanie :wqzrobiło całą różnicę.
KeitelDOG
1
Witamy. :q!pozwala wyjść bez zapisywania podczas :wqzapisywania do pliku przed zakończeniem .
Richard Wong,
Nadążam za poleceniami VIM, więc teraz wiem wiele rzeczy, które powinienem wiedzieć!
KeitelDOG
1

Zamknięcie okna terminala nie spowoduje zapisania pliku crontab.

Ponieważ do tworzenia pliku używa vim, sprawdź, jak korzystać z VIM i stamtąd.

uruchomiona jest preferowaną metodą (Apple) w 10.5 i 10.6, ale nie pytałeś o to, tylko jak utworzyć crontab.

eric.s
źródło
1

Okno, które pokazuje, to edytor vi. W tradycyjnych systemach uniksowych vi jest domyślnym edytorem; wygląda na to, że Mac OS X zachował tę tradycję.

Ustaw zmienne środowiskowe EDITORi VISUALna nazwę $PATHswojego ulubionego edytora (pełną ścieżkę, jeśli jej nie ma ). Na przykład

export EDITOR=emacs VISUAL=emacs
crontab -e

To ustawienie powinno przejść do twojego ~/.profile(zakładając, że Mac OS X czyta ten plik po zalogowaniu; jeśli istnieje sposób OSX definiowania zmiennych środowiskowych dla całej sesji, możesz je tam zdefiniować).

Gilles „SO- przestań być zły”
źródło
0

To moje rozwiązanie: najpierw zmodyfikuj edytor. export EDITOR=vim następnie zmodyfikuj .vimrc autocmd filetype crontab setlocal nobackup nowritebackup będzie działać.

Pegaz
źródło
Co to robi? Z jednej strony byłbym bardzo ostrożny, jeśli chodzi o zmianę plików konfiguracyjnych na przykład w przypadku jakiegoś anonimowego nieznajomego w interent, który nawet nie wyjaśnia, co powinny zrobić zmiany.
David Richerby,
Przepraszam za to. Problem ten napotykałem już wcześniej, a potem korzystam z tej metody, ale nie mogę znaleźć postu. Więc po prostu opublikowałem tę metodę, która zadziałała dla mnie. I możesz również google tej metody, aby dowiedzieć się, dlaczego to działa? Następnym razem poprawię swoją odpowiedź. Przepraszam za mój zły angielski.
Pegaz