Załóżmy, że uruchamiam skrypt at
na Linuksie (przykład poniżej), który, jak wiem, zajmie kilka godzin, a może nawet kilka dni. Jestem przyzwyczajony do at
wysyłania wiadomości e-mail z danymi wyjściowymi polecenia po jego zakończeniu, ale co zrobić, jeśli chcę zajrzeć do bieżącego wyniku przed jego zakończeniem? Załóżmy również, że już uruchomić skrypt i zapomniał przekierować wyjście używając tail
, tee
lub innych podobnych metod i nie chcesz, aby zatrzymać skrypt. Czy jest coś takiego?
drew@anubis:~$ at now
warning: commands will be executed using /bin/sh
at> ./myscript.sh
at> <EOT>
job 3 at Sat Jan 7 09:31:00 2017
tail -f
tego pliku?tail
i nie chcę go zatrzymywać.Odpowiedzi:
Jeśli zadanie się rozpoczęło i masz jakiś sposób na uzyskanie PID tego zadania, możesz zobaczyć, gdzie
at
zapisujesz dane wyjściowe:Jak widać, dane wyjściowe są zapisywane w pliku tymczasowym, który możesz teraz sprawdzić:
Potrzebujesz,
sudo
ponieważ katalog zawierający nie jest dostępny dla całego świata (przynajmniej w Ubuntu 14.04):źródło
at
pracę. Nie potrzebujesz nawet PID. Możesz po prostu uruchomićsudo ls /var/spool/cron/atspool
i teoretycznie powinien to być jedyny plik.Innym sposobem ustalenia, który plik buforowy należy do zadania, jest uzyskanie numeru zadania
atq
.Konwertuj numer zadania na hex. np. 38 (dec) = 26 (hex).
Twój plik będzie miał nazwę Litera kolejki (99% czasu
a
), a następnie 5-cyfrowy identyfikator zadania heksadecymalnego (nauczyłem się tego, przeglądając kod źródłowyat
polecenia).Następnie możesz wyświetlić standardowe wyjście
źródło