मेरे द्वारा काम करने की जगह पर कमांड्स हैं जिन्हें निष्पादित करने में लंबा समय लगता है।
क्या कोई कमांड / उपयोगिता है जिसे मैं कमांड का निष्पादन खत्म होने पर मुझे सूचित करने के लिए उपयोग कर सकता हूं? यह एक पॉपअप विंडो या शायद थोड़ी ध्वनि हो सकती है।
मेरे द्वारा काम करने की जगह पर कमांड्स हैं जिन्हें निष्पादित करने में लंबा समय लगता है।
क्या कोई कमांड / उपयोगिता है जिसे मैं कमांड का निष्पादन खत्म होने पर मुझे सूचित करने के लिए उपयोग कर सकता हूं? यह एक पॉपअप विंडो या शायद थोड़ी ध्वनि हो सकती है।
जवाबों:
आमतौर पर, यदि आप कमांड चलाने से पहले यह जानते हैं, तो आप इसे इसके साथ शुरू कर सकते हैं:
command; command-after &
यह पिछले कमांड के बाहर निकलने के command-after
बाद (इसके निकास कोड की परवाह किए बिना) निष्पादित करेगा । &
पृष्ठभूमि में शुरू कर देंगे।
यदि आप क्रमशः एक सफल या विफलता से बाहर निकलने की परवाह करते हैं, तो उपयोग करें:
command && command-after-only-if-success &
command || command-after-only-if-fail &
यदि आदेश पहले ही शुरू हो चुका है, तो आप इसे निलंबित करने के लिए नौकरी नियंत्रण का उपयोग कर सकते हैं, फिर इसे fg
अपनी अधिसूचना के साथ जंजीर के साथ अग्रभूमि पर लौटाएं :
command
# enter Ctrl-z
fg ; command-after
अब ... इसके बाद आप क्या करना चाहते हैं यह आपके पर्यावरण पर निर्भर करता है।
पर किसी भी प्रणाली , आप कर सकते हैं "अंगूठी" टर्मिनल घंटी । आपके सटीक सिस्टम पर निर्भर करता है कि वास्तव में क्या काम करता है (बीएसडी बनाम जीएनयू लिनक्स, आदि), लेकिन tput bel
क्या करना चाहिए। मैं मज़बूती से इसे अभी परीक्षण नहीं कर सकता, हालांकि। अधिक जानने के लिए "रिंग बेल" खोजें।
पर मैक ओएस एक्स , आप एक खोजक संवाद पॉप अप करने के AppleScript इस्तेमाल कर सकते हैं:
osascript -e 'tell Application "Finder" to display dialog "Job finished" '
आप इसे कुछ कह सकते हैं:
say "Job finished"
या आप माउंटेन लायन की अधिसूचना प्रणाली का उपयोग कर सकते हैं:
sudo gem install terminal-notifier # <= only need to do this once
terminal-notifier -message "Job finished!" -title "Info"
में गनोम , zenity
एक जीटीके संवाद बॉक्स में, कमांड लाइन से कहा जाता है दिखा सकते हैं। इस स्टैक ओवरफ्लो प्रश्न को भी देखें: लिनक्स में बैश स्क्रिप्ट से एक संदेश बॉक्स दिखा रहा है । इसे अपने पसंदीदा पैकेज मैनेजर के माध्यम से स्थापित किया जा सकता है।
zenity --info --text="Job finished"
कुछ वितरण हो सकते हैं xmessage
। जीटीके वातावरण के लिए विशेष रूप से, वहाँ है gxmessage
।
डेस्कटॉप एनवायरमेंट पर , जो डेस्कटॉप नोटिफिकेशन स्पेसिफिकेशन को लागू करते हैं , जैसे कि उबंटू और गनोम , एक नोटिफिकेशन सिस्टम है जिसे आप notify-send
(के हिस्से libnotify
) के साथ ट्रिगर कर सकते हैं ।
notify-send "Job finished!"
kdialog
उदाहरण के लिए केडीई का उपयोग करता है :
kdialog --passivepopup 'Job finished'
(command; command-after) &
?
यूनिक्स जैसी प्रणालियों पर आप श्रव्य-घंटी को बजा सकते हैं:
echo -e "\a"
tput bel
मैंने MacOS X के लिए एक सरल टूल बनाया, जो ठीक यही करता है। https://github.com/vikfroberg/brb
स्थापना
$ npm install -g brb
अनुदेश
$ sleep 3; brb
ध्वनि सूचना प्राप्त करने के लिए आप इसका उपयोग कर सकते हैं spd-say "Some text"
। उदाहरण:
some-command; spd-say "Yo"
sudo apt-get install speech-dispatcher
। या विकल्प का उपयोग पूछेंububuntu.com/questions/501910/…
मैंने अभी-अभी Cygwin के डेस्कटॉप नोटिफिकेशन के लिए notifu का उपयोग करना शुरू किया है। यह विंडोज के लिए कमांड लाइन नोटिफिकेशन ऐप है।
उदाहरण:
ls -l && /c/notifu-1.6/notifu64 /m "This is a simple Notifu message."
मैंने ntfy
ठीक इसी उद्देश्य से लिखा था । यह क्रॉस-प्लेटफ़ॉर्म है और लंबे समय तक चलने वाले कमांड खत्म होने पर स्वचालित रूप से सूचनाएं भेज सकता है ।
यदि आपके पास पायथन है pip
(सबसे लिनक्स डिस्ट्रोस और मैकओएस है), तो यहां बताया गया है कि इसे कैसे स्थापित किया जाए और स्वचालित सूचनाएं सक्षम करें:
$ sudo pip install ntfy
$ echo 'eval "$(ntfy shell-integration)"' >> ~/.bashrc
$ # restart your shell
इसे http://ntfy.rtfd.io पर देखें
इसके अलावा, यह भी कर सकते हैं:
लिनक्स के लिए, हर बार अधिसूचना के लिए एक कमांड टाइप किए बिना यह करने के लिए एक निफ्टी चाल है।
सबसे पहले ऑटोकाइ इंस्टॉल करें। यह विभिन्न कीस्ट्रोक्स के लिए क्रियाओं को परिभाषित करने में मदद करता है।
sudo apt-get install autokey-gtk
अब, ऑटोके में एक नया वाक्यांश परिभाषित करें और हॉटकी को Alt + Enter के रूप में निर्दिष्ट करें। इस वाक्यांश को जोड़ें:
; notify-send "Job finished!" &
#
ध्यान दें कि पहली पंक्ति के बाद एक नई लाइन महत्वपूर्ण है।
इसके अलावा, एक विंडो फ़िल्टर जोड़ें। मैं गाइक और टर्मिनल का उपयोग करता हूं। जो भी अन्य टर्मिनल आप उपयोग करते हैं उसे शामिल करें।
.*(guake)|(Terminal).*
हो गया!!
अब, जब भी आपको कमांड के लिए सूचना प्राप्त करने की आवश्यकता होती है, तो इसे एंटर / रिटर्न के बजाय Alt + Enter का उपयोग करके चलाएं।
स्रोत: http://dotpad.blogspot.in/2014/12/notification-when-command-finished.html
यद्यपि अन्य उत्तर पहले से ही समाप्त नौकरी पर सूचनाएं प्राप्त करने के अधिकांश तरीकों को कवर करते हैं, मैं अपने दो सेंट देना चाहता हूं क्योंकि आपने निम्नलिखित प्रारूप में अपना प्रश्न पूछा था:
मेरे द्वारा काम करने की जगह पर कमांड्स हैं जिन्हें निष्पादित करने में लंबा समय लगता है।
मेरी भी यही समस्या है। कभी-कभी कुछ 15 मिनट तक चल सकता है।
मैं अपने .bashrc में निम्नलिखित कार्य करता हूं:
# 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
}
यह पुशओवर ऐप का उपयोग मेरे फोन पर एक अधिसूचना को धकेलने के लिए करता है। इस तरह मैं दोपहर के भोजन पर जा सकता हूं या एक बैठक में प्रवेश कर सकता हूं और फिर भी नौकरी छोड़ने से पहले अपने कंप्यूटर पर शुरू की गई नौकरियों पर अधिसूचित हो सकता हूं।
मैं इसे निम्नलिखित तरीके से उपयोग करता हूं:
command_to_run && push "yes! command finished successfully!" || push "awww man! something failed :-("
इसलिए, यदि कमांड एक सही निकास कोड देता है, तो पहला धक्का निष्पादित किया जाएगा। एक त्रुटि पर, दूसरे को निष्पादित किया जाएगा।
Ofc आपको पुशओवर पर एक उपयोगकर्ता बनाने और https://pushover.net/ से सूचनाएं भेजने के लिए एक ऐप रजिस्टर करने की आवश्यकता है
उम्मीद है कि यह मदद की!
यदि आप अपने इंटरेक्टिव शेल के रूप में csh या tsh का उपयोग करते हैं, तो आप notify
कमांड का उपयोग कर सकते हैं :
% long-running-command &
[1] 14431
% notify %1
%
(later, when the command finishes)
[1] Done long-running-command
आप के साथ बैश में एक समान प्रभाव प्राप्त कर सकते हैं set -b
या set -o notify
।
यह संभवतः आपकी आवश्यकताओं को पूरा नहीं करता है, क्योंकि यह सब एक संदेश मुद्रित करता है; मुझे नहीं लगता कि इसे विंडो को पॉप अप करने या घंटी बजाने के लिए कॉन्फ़िगर किया जा सकता है।
सिस्टम पर 'awk' के साथ प्रयास करें
awk 'BEGIN{ print "\a" }'
मेरे लिए काम करने वाला एकमात्र व्यक्ति था।
\a
( ट्रिंथ का जवाब )।
यदि आप उपयोग कर रहे हैं npm
तो नोड-नोटिफ़ायर एक क्रॉस-प्लेटफ़ॉर्म समाधान प्रदान करते हैं ।
notify -t "Agent Coulson" --icon https://raw.githubusercontent.com/mikaelbr/node-notifier/master/example/coulson.jpg -m "Well, that's new. "
काश मैंने इस धागे को सालों पहले देखा होता। मेरा समाधान अनिवार्य रूप से स्लॉक के समान ही था, लेकिन मैंने एक पटकथा लिखी। मैं इसका हर समय उपयोग करता हूं। इसे साझा करने के लिए यहां पोस्ट कर रहा हूं।
#!/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
स्पष्टीकरण का एक छोटा सा हिस्सा: स्ट्रिंग "\x1b]0;$msg\a"
उस संदेश को खिड़की के टाइटल बार में डालने के लिए एएनएसआई एस्केप अनुक्रम है जिसमें से इसे निष्पादित किया गया था। मुझे लगता है कि यह कभी-कभी देखने में सक्षम होता है कि यह संदेश किस विंडो से आया था।
तो यह काफी देर से आता है, लेकिन मैंने ऐसा करने के लिए एक प्रणाली का उपयोग करना शुरू कर दिया है: मेरे पास एक बैश स्क्रिप्ट है जो जो कुछ भी कमांड को पारित करता है उसे उसके बाद से निष्पादित करता है
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"
और फिर मैं बस एन prepend n
n bundle install
n npm install
एक अन्य संभावना है alert
, लिनक्स पर काम करता है।
>any-command; alert
यह इमेज के अनुसार एक नोटिफिकेशन देता है। चेतावनी सूचना
मैंने एक ऐसा ऐप बनाया है जो एक प्रक्रिया समाप्त होने पर आपके एंड्रॉइड फोन पर एक सूचना भेजेगा ताकि आपको अपने कंप्यूटर पर टेदर न करना पड़े।
इंस्टॉल करें, फिर ;notifier.sh
अपने कमांड के अंत में जोड़ें ।
उदाहरण के लिए, यदि आपकी आज्ञा थी make install
, तो आप अपना आदेश देंगे:
make install; notifier.sh
fg;say "Job finished"
यह काम करेगा। लेकिन ... क्या ऐसा कोई तरीका है जिससे इसे और स्वचालित किया जा सके - यानी घंटी बजाना या किसी भी काम को पूरा करने के बाद सूचित करना जो एक मिनट से अधिक की सीमा से अधिक लगता है? क्या कोई शेल वैरिएबल है, उदाहरण के लिए बैश में, जो कि अंतिम कमांड का बीता हुआ समय है?