Mac OS X: polecenie nie działa

42

Mam zamiar zaplanować pracę za pomocą polecenia. Tutaj wypróbowałem następujące polecenie:

$ at now + 1 minute
echo 'Test at command'
<EOD>

Widziałem, że zadanie zostało zaplanowane przy użyciu -l. Jednak nie widziałem echa.

Myślę, że może być konieczne dodanie użytkownika do pliku at.allow. Nie mogę znaleźć at.allow na moim komputerze Mac (Snow Leopard). Nie wiesz, co muszę zrobić, aby to przetestować na polecenie?

David.Chu.ca
źródło
Próbowałem odczytać informacje od mężczyzny z. Wspomniał, że „Jeśli istnieje plik _PERM_PATH / at.allow, tylko wymienione w nim nazwy użytkowników mogą być używane w ... Jeśli ... at.allow nie istnieje, _PERM_PATH / at.deny jest zaznaczone,…” I nie jestem pewien, co to jest _PERM_PATH.
W przypadku systemu Apple OSX Leopard PERM_PATH dla „at” to / usr / lib / cron.
Richard Hoskins,
W systemie Mac OS X Lion to/var/at
Stefan Schmidt,

Odpowiedzi:

40

Aby włączyć potrzebnego atrundemona, jak man atrunmówi, wykonaj:

launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

jako root (np. via sudo). Gdy to zrobisz, /var/at/będzie katalogiem kluczy (chociaż najprostszym sposobem jest użycie go atjako root - np. Jeszcze raz przez sudo! -).

Alex Martelli
źródło
Wiem, że musisz być rootem, aby włączyć demona atrun, ale nie musisz być rootem, aby uruchamiać komendy „at”. (Chyba że te polecenia wymagają rootowania.)
Richard Hoskins,
1
czy ta aktywacja lub atrun przetrwają ponowne uruchomienie?
Eric O Lebigot,
Według strony podręcznika tak, ale jeszcze tego nie próbowałem.
Stefan Schmidt
1
jeśli /var/at/at.denyjest pusty, nie musisz być rootem, aby kolejkować w zadaniach, w przeciwnym razie możesz dodać swoją nazwę użytkownika /var/at/at.allow.
Stefan Schmidt
Najpierw powinienem przeczytać strony podręcznika ... Dzięki!
polim
13

W Snow Leopard musisz:

  1. Edytuj /System/Library/LaunchDaemons/com.apple.atrun.plist, zmień wyłączony węzeł potomny z true-> false.

  2. Rozładuj prąd za /System/Library/LaunchDaemons/com.apple.atrun.plistpomocą:

    sudo launchctl unload -F /System/Library/LaunchDaemons/com.apple.atrun.plist
    

    Następnie załaduj edytowaną wersję

    sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
    
  3. Sprawdź, czy działa z:

    echo blah | at now+1
    
  4. Jeśli echo nie powiedzie się z innego powodu, powinieneś być w stanie przynajmniej zobaczyć, że kolejka została wyczyszczona za pomocą:

    atq
    
Somantra
źródło
1
To jedyny, który pracował dla mnie na OSX 10.10 Yosemite.
Colin Dean,
5

Próbowałem tego na OS X Lion i wydawało się, że działa.

Najpierw włącz atrundiamon:

launchctl load -w
/System/Library/LaunchDaemons/com.apple.atrun.plist

Następnie dodaj [swoją nazwę użytkownika] do /var/at/at.allow.

Po wykonaniu otrzymasz wynik o /var/mail/[your username]

Uważam, że przedmioty w kolejce batchpotrzebują kilku minut na wykonanie.

chris838
źródło
2

Inni odpowiedzieli na to, że zostali wyłączeni w systemie Mac OS X i nie wiem o tym, ale jest jeszcze jeden problem: gdzie spodziewacie się, że polecenie echa wydrukuje komunikat? W innych systemach Unix, z których korzystałem, nie drukuje w tym samym oknie powłoki, w którym wydałeś polecenie at . Pamiętaj, że kiedy w pracy jest uruchamiany, to nie może nawet być zalogowany dłużej.

Zamiast tego spróbuj zapisać coś w pliku i sprawdź, czy plik pojawi się we właściwym czasie.

Thomas Padron-McCarthy
źródło
Strona podręcznika stwierdza, że ​​dane wyjściowe zostaną do Ciebie wysłane.
Stefan Schmidt,
@Stefan: Tak, i działało to dobrze w latach 80-tych, kiedy poczta była obsługiwana lokalnie na tym samym komputerze, ale moje doświadczenie (z innymi typami Uniksa niż Mac OS X) jest takie, że w dzisiejszych czasach nie powinieneś oczekiwać żadnej poczty.
Thomas Padron-McCarthy
0

Moja instalacja systemu OS X (10.4) mówi man at:

UWAGA
     at, batch, atq, atrm są domyślnie wyłączone w Mac OS X.

Czy włączyłeś atrunzgodnie z instrukcjami tam zawartymi?

Greg Hewgill
źródło
Próbowałem znaleźć, gdzie jest atrun na moim komputerze Mac. Z sieci inną opcją jest dodanie użytkownika do at.allow. Nie mogłem również znaleźć tego pliku (at.allow).