Miejsce, w którym pracuję, ma polecenia, których wykonanie zajmuje dużo czasu.
Czy istnieje polecenie / narzędzie, którego mogę użyć, aby powiadomić mnie o zakończeniu wykonywania polecenia? Może to być wyskakujące okienko lub dźwięk.
command-line
unix
process
notifications
Utkarsh Sinha
źródło
źródło
fg;say "Job finished"
to zadziała. Ale ... czy jest jakiś sposób, aby można go jeszcze zautomatyzować - np. Zadzwonić lub powiadomić po zakończeniu każdego zadania, które zajmuje więcej niż próg, jak minuta? Czy istnieje zmienna powłoki, np. W bash, która upłynęła od ostatniego polecenia?Odpowiedzi:
Ogólnie rzecz biorąc, jeśli wiesz o tym przed uruchomieniem polecenia, możesz po prostu uruchomić go za pomocą:
Spowoduje to wykonanie polecenia
command-after
po wyjściu z poprzedniego polecenia (niezależnie od kodu wyjścia).&
Rozpocznie go w tle.Jeśli zależy Ci na pomyślnym lub nieudanym wyjściu, użyj odpowiednio:
Jeśli polecenie już się rozpoczęło, możesz użyć kontroli zadań, aby go zawiesić, a następnie powrócić na pierwszy plan z
fg
łańcuchem z powiadomieniem:Teraz ... to, co chcesz zrobić, zależy od twojego środowiska.
W dowolnym systemie można „zadzwonić” dzwonkiem terminala . Zależy od twojego systemu, co naprawdę działa (BSD vs. GNU Linux itp.), Ale
tput bel
powinno działać. Jednak nie mogłem tego teraz niezawodnie przetestować. Wyszukaj „dzwonek”, aby dowiedzieć się więcej.W systemie Mac OS X można użyć AppleScript, aby wyświetlić okno dialogowe Findera:
Mógłbyś powiedzieć coś do ciebie:
Lub możesz skorzystać z systemu powiadomień Mountain Lion:
W GNOME ,
zenity
może pokazać się okno dialogowe GTK, zwany z wiersza poleceń. Zobacz także pytanie Przepełnienie stosu: wyświetlanie okna komunikatu ze skryptu bash w systemie Linux . Można go zainstalować za pomocą ulubionego menedżera pakietów.Niektóre dystrybucje mogą mieć
xmessage
. Jest specjalnie dla środowisk GTKgxmessage
.W środowiskach pulpitu, które implementują specyfikację powiadomień pulpitu , takich jak Ubuntu i GNOME , istnieje system powiadomień, który można uruchamiać za pomocą
notify-send
(częścilibnotify
).KDE używa
kdialog
na przykład:źródło
(command; command-after) &
?W systemach uniksowych możesz zadzwonić dźwiękiem:
źródło
tput bel
Stworzyłem proste narzędzie dla MacOS X, które właśnie to robi. https://github.com/vikfroberg/brb
Instalacja
Instrukcje
źródło
Aby uzyskać powiadomienie dźwiękowe, możesz użyć
spd-say "Some text"
. Przykład:źródło
sudo apt-get install speech-dispatcher
. Lub skorzystaj z alternatywy askubuntu.com/questions/501910/…Właśnie zacząłem używać notifu do powiadomień na pulpicie od Cygwin. Jest to aplikacja do powiadamiania z wiersza poleceń dla systemu Windows.
Przykład:
źródło
Napisałem
ntfy
właśnie w tym celu. Jest wieloplatformowy i może automatycznie wysyłać powiadomienia po zakończeniu długotrwałych poleceń.Jeśli masz Pythona
pip
(większość dystrybucji Linuksa i MacOS to ma), oto jak go zainstalować i włączyć automatyczne powiadomienia:Sprawdź to na http://ntfy.rtfd.io
Oprócz tego może również:
źródło
W przypadku Linuksa jest sprytna sztuczka, aby to zrobić automatycznie, bez konieczności wpisywania polecenia za każdym razem.
Najpierw zainstaluj autokey. Pomaga to zdefiniować działania dla różnych naciśnięć klawiszy.
Teraz zdefiniuj nową frazę w autokey i przypisz skrót klawiszowy jako Alt + Enter. Dodaj tę frazę:
Zauważ, że nowa linia po pierwszej linii jest ważna.
Dodaj także filtr okna. Używam guake i terminalu. Uwzględnij dowolny inny używany terminal.
Jesteś skończony!!
Teraz za każdym razem, gdy potrzebujesz powiadomień o poleceniu, uruchom je za pomocą Alt + Enter zamiast Enter / Return.
Źródło: http://dotpad.blogspot.in/2014/12/notification-when-command-finished.html
źródło
Chociaż inne odpowiedzi już obejmowały większość sposobów otrzymywania powiadomień o ukończonej pracy, chcę dać moje dwa centy, ponieważ zadałeś pytanie w następującym formacie:
Mam ten sam problem. Czasami coś może działać przez 15 minut.
Mam następującą funkcję w moim .bashrc:
Korzysta z aplikacji Pushover, aby przesłać powiadomienie na mój telefon. W ten sposób mogę iść na lunch lub wziąć udział w spotkaniu i nadal otrzymywać powiadomienia o zadaniach rozpoczętych na komputerze przed wyjazdem.
Używam go w następujący sposób:
Tak więc, jeśli polecenie zwróci prawidłowy kod wyjścia, zostanie wykonane pierwsze wypchnięcie. W przypadku błędu zostanie wykonany drugi.
Często musisz utworzyć użytkownika w Pushover i zarejestrować aplikację, aby wysyłać powiadomienia z https://pushover.net/
mam nadzieję, że to pomogło!
źródło
Jeśli używasz csh lub tcsh jako interaktywnej powłoki, możesz użyć
notify
polecenia:Możesz osiągnąć podobny efekt w bashu za pomocą
set -b
lubset -o notify
.Prawdopodobnie nie spełnia Twoich wymagań, ponieważ wystarczy wydrukować wiadomość; Nie sądzę, że można to skonfigurować tak, żeby wyskoczyło okno lub zadzwoniło.
źródło
W systemach z „awk” spróbuj
był jedynym, który dla mnie pracował.
źródło
\a
( odpowiedź Trinth ).Jeśli używasz,
npm
to węzeł-powiadomienie zapewnia rozwiązanie dla wielu platform .Zapowiedź
źródło
Chciałbym zauważyć ten wątek lata temu. Moje rozwiązanie było w zasadzie takie samo jak rozwiązanie slhck, ale napisałem skrypt. Używam tego cały czas. Publikowanie tutaj, aby je udostępnić.
Jedno małe wyjaśnienie: ciąg znaków
"\x1b]0;$msg\a"
jest sekwencją ucieczkową ANSI, która umieszcza komunikat na pasku tytułowym okna, z którego został wykonany. Czasami bardzo mi się przydaje, aby zobaczyć, z którego okna pochodzi wiadomość.źródło
To przychodzi dość późno, ale zacząłem używać do tego systemu: mam skrypt bash, który wykonuje każde polecenie, które zostanie mu przekazane
http://somesh.io/2017/02/19/get-notified-when-long-commands-are-done-executing-on-ubuntu/
a potem po prostu dodam n
źródło
Inną możliwością jest użycie
alert
, Działa w systemie Linux.Daje powiadomienie jak na obrazku. powiadomienie o alertach
źródło
Zrobiłem aplikację, która wyśle powiadomienie na Twój telefon z Androidem, gdy proces się zakończy, więc nie musisz być przywiązany do komputera.
Zainstaluj, a następnie dodaj
;notifier.sh
na końcu polecenia.Na przykład, jeśli twoje polecenie było
make install
, wydasz polecenie:make install; notifier.sh
https://notifier.sh
https://play.google.com/store/apps/details?id=sh.notifier
źródło