Uruchamiam długi proces na zdalnej powłoce. Chciałbym uruchomić powiadomienie po zakończeniu procesu. Ta odpowiedź nie wystarcza, ponieważ długie polecenie znajduje się na serwerze zdalnym, więc nie może wywołać powiadamiania o terminalu.
Mogę zbliżyć się do mojego pożądanego rezultatu, używając wyzwalacza iTerm2. Na przykład jeśli uruchomię następujące polecenie na serwerze zdalnym i ustawię wyzwalacz iTerm2 dla __FINISHED__:
./long_process && echo "\__FINISHED__"
Ma to niepożądaną cechę, że za każdym razem, gdy przewijam do tego polecenia w moim edytorze lub moim kodzie (używam kodu w powłoce emacsa), powiadomienie uruchamia się.
Jednym rozwiązaniem może być powiadomienie tekstowe rozpoznawane przez iTerm2, ale nie pojawi się ono w buforze przewijania emacsa.
echo "__FIN""ISHED__"
Odpowiedzi:
Nie określiłeś, jakiego rodzaju powiadamiania chcesz, ani jakiego systemu operacyjnego działa zdalny serwer, więc będę musiał poczynić tutaj pewne założenia. Zakładam, że nie obchodzi cię, jaki typ powiadomienia jest tak długo, jak długo jesteś powiadamiany, i że zdalny serwer działa z pewnym zapachem * nix.
Wyślij sobie e-mail. Jeśli
sendmail
jest skonfigurowany na serwerze, możesz to zrobićssh z powrotem na lokalną maszynę (zakładając, że jest to możliwe) i spraw, aby z tobą rozmawiał. Widzieć tutaj po więcej fajnych sposobów na uzyskanie sygnału OSX.
lub
Jeśli łączysz się z dynamicznego adresu IP i skonfigurowałeś router tak, abyś mógł ssh do tego dynamicznego adresu IP, możesz to zrobić (zakładając, że jesteś aktualnie połączony tylko ze zdalnym komputerem):
Możesz ustawić ssh bez hasła w normalny sposób . Dynamiczny adres IP nie powinien mieć na niego wpływu. Gdy to zrobisz, powyższy kod zadziała.
Posługiwać się łatwizna i wyślij powiadomienie na urządzenie z Androidem lub iOS (jeśli je masz)
źródło
say
ponad SSH jest naprawdę fajny na komputerach Mac.Możesz
echo
dzwon -\a
na zdalnym terminalu:./long_process ; echo -e '\a'
Niektóre emulatory terminali zagrają jakiś dźwięk i mogą wyświetlać powiadomienia. W szczególności iTerm2 wyświetli powiadomienie i odtworzy dźwięk, jeśli karta procesu nie jest skupiona.
Zauważ też, że użyłem
;
oddzielić polecenia. W ten sposób będziesz powiadamiany nawet wtedy, gdy komenda zwróci status niezerowy&&
będzie działać tylko wtedy, gdy polecenie się powiedzie.źródło