Çalıştığım yerin yürütülmesi uzun zaman alan komutlara sahip.
Komut yürütme işlemi sona erdiğinde bana bildirmek için kullanabileceğim bir komut var mı? Bir açılır pencere veya belki biraz ses olabilir.
Çalıştığım yerin yürütülmesi uzun zaman alan komutlara sahip.
Komut yürütme işlemi sona erdiğinde bana bildirmek için kullanabileceğim bir komut var mı? Bir açılır pencere veya belki biraz ses olabilir.
Yanıtlar:
Genel olarak, komutu çalıştırmadan önce bunu biliyorsanız , sadece şununla başlayabilirsiniz:
command; command-after &
Bu , önceki komuttan çıktıktan command-after
sonra yürütülecektir (çıkış kodundan bağımsız olarak). &
Arka planda başlayacaktır.
Başarılı veya başarısız bir çıkışla ilgileniyorsanız, sırasıyla şunları kullanın:
command && command-after-only-if-success &
command || command-after-only-if-fail &
Komut daha önce başladıysa, askıya almak için iş denetimini kullanabilirsiniz, ardından fg
bildiriminizle zincirlenmiş olarak ön plana geri getirin :
command
# enter Ctrl-z
fg ; command-after
Şimdi… Bundan sonra ne yapmak istediğinizi çevrenize bağlı.
On bir sistemin yapabilirsiniz "halka" Terminal çan . Tam olarak neyin işe yarayıp yaramadığını (BSD vs. GNU Linux vb.) Bağlıdır, ama tput bel
yapmalı. Yine de şu anda güvenilir bir şekilde test edemedim. Daha fazla bilgi için "zil çalın" arayın.
On Mac OS X , bir Bulucu iletişimini açmak için AppleScript'i olabilir:
osascript -e 'tell Application "Finder" to display dialog "Job finished" '
Sana bir şey söylemiş olabilir:
say "Job finished"
Ya da Mountain Lion’un bildirim sistemini kullanabilirsiniz:
sudo gem install terminal-notifier # <= only need to do this once
terminal-notifier -message "Job finished!" -title "Info"
In GNOME , zenity
komut satırından adlı bir GTK iletişim kutusunu gösterebilir. Ayrıca bu Yığın Taşması sorusuna bakınız: linux'ta bir bash betiğinden bir mesaj kutusu gösteriliyor . Favori paket yöneticiniz aracılığıyla kurulabilir.
zenity --info --text="Job finished"
Bazı dağıtımlar olabilir xmessage
. Özellikle GTK ortamları için var gxmessage
.
Ubuntu ve GNOME gibi Masaüstü Bildirimleri Belirtimini uygulayan masaüstü ortamlarında , tetikleyebileceğiniz bir bildirim sistemi vardır (bunun bir parçası ).notify-send
libnotify
notify-send "Job finished!"
KDEkdialog
, örneğin kullanır :
kdialog --passivepopup 'Job finished'
(command; command-after) &
mi
Unix benzeri sistemlerde sesli zili çalabilirsiniz:
echo -e "\a"
tput bel
MacOS X için tam olarak bunu yapan basit bir araç yarattım. https://github.com/vikfroberg/brb
Kurulum
$ npm install -g brb
Talimatlar
$ sleep 3; brb
Sesli bir bildirim almak için kullanabilirsiniz spd-say "Some text"
. Örnek:
some-command; spd-say "Yo"
sudo apt-get install speech-dispatcher
. Veya alternatifleri kullanın askubuntu.com/questions/501910/…
Cygwin'den masaüstü bildirimleri için notifu kullanmaya yeni başladım . Windows için bir komut satırı bildirim uygulaması.
Örnek:
ls -l && /c/notifu-1.6/notifu64 /m "This is a simple Notifu message."
ntfy
Bu amaçla yazdım . Öyle çapraz platform ve edebilirsiniz otomatik uzun çalışan komutları bittiğinde bildirim gönderebilir.
Python'a sahipseniz pip
(çoğu Linux dağıtımı ve MacOS'ta bulunur), nasıl yükleneceği ve otomatik bildirimlerin etkinleştirildiği yer:
$ sudo pip install ntfy
$ echo 'eval "$(ntfy shell-integration)"' >> ~/.bashrc
$ # restart your shell
Http://ntfy.rtfd.io adresinden kontrol edin.
Buna ek olarak, şunları da yapabilir:
Linux için, her zaman bildirim için bir komut yazmak zorunda kalmadan, bunu otomatik olarak yapmak için şık bir numara vardır.
İlk önce autokey'i kurun. Bu, farklı tuş vuruşları için eylemlerin tanımlanmasına yardımcı olur.
sudo apt-get install autokey-gtk
Şimdi, otomatik tuşta yeni bir cümle tanımlayın ve kısayol tuşunu Alt + Enter olarak atayın. Bu cümleyi ekle:
; notify-send "Job finished!" &
#
İlk satırdan sonra yeni bir satırın önemli olduğunu unutmayın.
Ayrıca, bir pencere filtresi ekleyin. Guake ve terminal kullanıyorum. Kullandığınız diğer terminalleri de dahil edin.
.*(guake)|(Terminal).*
Sen bittin!!
Şimdi, bir komut için bildirim almanız gerektiğinde, Enter / Return yerine Alt + Enter tuşlarını kullanarak çalıştırın.
Kaynak: http://dotpad.blogspot.in/2014/12/notification-when-command-finished.html
Diğer cevaplar, bitmiş bir işte bildirim almanın yollarının çoğunu kapsamış olmasına rağmen, sorunuzu aşağıdaki biçimde sorduğunuzdan beri iki senti vermek istiyorum:
Çalıştığım yerin yürütülmesi uzun zaman alan komutlara sahip.
Bende de aynı problem var. Bazen bir şey 15 dakika boyunca koşabilir.
Benim .bashrc içinde aşağıdaki işlevi var:
# push a notification to your phone. can be handy if you're running a
# build and you want to be notified when it's finished.
push() {
curl -s -F "token=PUSHOVER_TOKEN" \
-F "user=PUSHOVER_USER" \
-F "title=terminal" \
-F "message=$1" https://api.pushover.net/1/messages.json > /dev/null 2>&1
}
Bu telefonuma bir bildirim itmek için Pushover uygulamasını kullanır. Bu şekilde öğle yemeğine gidebilir ya da bir toplantıya katılabilir ve ayrılmadan önce bilgisayarımdan başlattığım işler hakkında hala bildirim alabilirim.
Aşağıdaki şekilde kullanıyorum:
command_to_run && push "yes! command finished successfully!" || push "awww man! something failed :-("
Bu nedenle, komut doğru bir çıkış kodu verirse, ilk basma işlemi gerçekleştirilir. Bir hata durumunda, ikincisi çalıştırılacaktır.
Ofc'de bir kullanıcı oluşturmanız ve https://pushover.net/ adresinden bildirim göndermek için bir uygulama kaydetmeniz gerekir.
Umarım bu yardımcı oldu!
Etkileşimli kabuğunuz olarak csh veya tcsh kullanıyorsanız, aşağıdaki notify
komutu kullanabilirsiniz :
% long-running-command &
[1] 14431
% notify %1
%
(later, when the command finishes)
[1] Done long-running-command
Bash de set -b
veya ile benzer bir etki elde edebilirsiniz set -o notify
.
Muhtemelen ihtiyaçlarınızı karşılamıyor, çünkü tek yaptığı bir mesaj yazdırmak; Bir pencereyi açacak ya da zili çalabilecek şekilde yapılandırılabileceğini sanmıyorum.
'Awk' olan sistemlerde deneyin
awk 'BEGIN{ print "\a" }'
benim için çalışacak tek kişiydi.
\a
( trinth'in cevabı ).
Eğer kullanıyorsanız npm
o zaman düğüm-notifier bir sağlamak çapraz platform çözümü .
notify -t "Agent Coulson" --icon https://raw.githubusercontent.com/mikaelbr/node-notifier/master/example/coulson.jpg -m "Well, that's new. "
Keşke bu konuyu yıllar önce fark etseydim. Benim çözümüm aslında slhck'lerle aynıydı, ancak bir senaryo yazdım. Ben her zaman kullanırım. Paylaşmak için burada yayınlanıyor.
#!/bin/bash
msg='all done'
quiet=false
if [ "$1" = '-q' ]; then quiet=true; shift; fi
if [ $# -gt 0 ]; then msg="$*"; fi
echo -ne "\x1b]0;$msg\a"
if [ -x /usr/bin/zenity ]; then
unset WINDOWID
exec zenity --info --text="$msg"
elif [ -x /usr/bin/xmessage ]; then
exec xmessage -nearmouse "$msg"
elif [ -x /usr/bin/osascript ]; then
if ! $quiet; then say "done" &; fi
osascript -e "tell application \"System Events\" to display dialog \"$msg\""
else
echo $msg
fi
Küçük bir açıklama: dize "\x1b]0;$msg\a"
, iletiyi çalıştırıldığı pencerenin başlık çubuğuna yerleştirmek için kullanılan ANSI çıkış dizisidir. Bazen mesajın hangi pencereden geldiğini görebilmek için oldukça kullanışlı buluyorum.
Yani bu oldukça geç geliyor, ama bunu yapmak için bir sistem kullanmaya başladım: Sonradan kendisine hangi komutu iletilirse uygulayan bir bash betiğim var
http://somesh.io/2017/02/19/get-notified-when-long-commands-are-done-executing-on-ubuntu/
#!/bin/bash
# file location : /usr/bin/n
set +e
# $@ executes whatever command is typed after the filename
$@
notify-send "Task Completed"
ve sonra sadece n'yi hazırlarım
n bundle install
n npm install
Başka bir olasılık da alert
Linux'ta Works kullanmaktır .
>any-command; alert
Resimdeki gibi bir bildirim verir. uyarı bildirimi
Bir işlem sona erdiğinde Android telefonunuza bildirim gönderecek bir uygulama yaptım, böylece bilgisayarınıza bağlı kalmak zorunda kalmazsınız.
Kur, sonra ;notifier.sh
komutunun sonuna ekle .
Örneğin, emriniz olsaydı, emrinizi yerine make install
getirirdiniz:
make install; notifier.sh
fg;say "Job finished"
İşe yarayacağını anlamalıydım . Fakat ... daha da otomatikleştirilebilecek bir yolu var mı - yani bir dakika gibi bir eşikten daha fazla süren herhangi bir işin bitiminden sonra zili çalın veya haber verin? Örneğin, bash olarak, son komutun geçen zamanı gibi bir kabuk değişkeni var mı?