सवाल नौकरी / प्रक्रिया समाप्त होने पर मैं अधिसूचना कैसे ट्रिगर कर सकता हूं?


जिस स्थान पर मैं काम करता हूं वह आदेश है जो निष्पादित करने में लंबा समय लगता है।

क्या कमांड / उपयोगिता है जिसे कमांड निष्पादन खत्म होने पर मुझे सूचित करने के लिए मैं उपयोग कर सकता हूं? यह एक पॉपअप विंडो या शायद थोड़ा सा ध्वनि हो सकता है।


83
2017-10-11 20:22


मूल


@ स्लैक का स्वीकार्य उत्तर अच्छा है - मुझे यह महसूस करना चाहिए था fg;say "Job finished" काम करेगा। लेकिन ... क्या कोई तरीका है कि इसे और भी स्वचालित किया जा सकता है - यानी घंटी बजाना या किसी भी नौकरी के पूरा होने के बाद अधिसूचित करना जो एक मिनट की तरह थ्रेसहोल्ड से अधिक लेता है? क्या कोई खोल चर है, उदा। बाश में, आखिरी कमांड का समय बीत चुका है? - Krazy Glew
... 2 घंटे बाद, मिला stackoverflow.com/questions/1862510/... ... डाल '(($ timer_show> $ {LONG_RUNTIME: -300})) और "टाइमर_स्टॉप में" लंबे समय तक चलने वाली नौकरी पूर्ण "कहें ... अगला, emacs' संकलन आदेशों में जोड़ें ... और मेरी कंकड़ घड़ी को सूचित करें ( मुझे फ़ोन नोटिफिकेशन से नफरत है) - Krazy Glew


जवाब:


आम तौर पर, अगर आप इसे जानते हैं से पहले आदेश चला रहा है, आप इसे अभी शुरू कर सकते हैं:

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

    notify-send "Job finished!"
    
  • केडीई का उपयोग करता है kdialog, उदाहरण के लिए:

    kdialog --passivepopup 'Job finished'
    

114
2017-10-11 20:40



मुझे बताएं कि आपने किस आदेश का उपयोग किया था! मैंने कुछ अन्य विकल्प भी जोड़े। - slhck
मैं अधिसूचना-भेज और xmessage के साथ चारों ओर झुका रहा हूँ। उनमें से दोनों दिलचस्प लगते हैं! यह अगली चीज़ है जिसे मैं ढूंढ रहा हूं - superuser.com/questions/345463/... - Utkarsh Sinha
मैक ओएस एक्स पर, आप "लाइन" कमांड लाइन उपयोगिता का भी उपयोग कर सकते हैं। कई आवाज़ें भी उपलब्ध हैं, "कहें -हे" की जांच करें;) - trinth
आप क्यों सुझाव दे रहे हैं कि "कमांड-बाद" को असीमित रूप से चलाया जाना चाहिए? क्या आप कहना चाहते थे (command; command-after) &? - G-Man
यह समाधान कंसोल उपयोगकर्ताओं के लिए है और यह एक सही समाधान नहीं है क्योंकि यह आपके आदेश पर निर्भर करता है या तो पूर्ण होने तक या पूरी तरह से चुप (कोई आउटपुट) होने तक वर्बोज़ होने पर निर्भर करता है जब तक कि यह प्रॉम्प्ट रिटर्न देता है। हालांकि, जब मैं मदद की तलाश में आया तो मुझे वही चाहिए। आप अधिसूचना पॉप-अप करने, ध्वनि चलाने के लिए कंसोल को कॉन्फ़िगर कर सकते हैं। फिर आपको खोल निगरानी चालू करनी होगी। मौन के लिए मॉनीटर करें यदि आपका कमांड तब तक सामानों का एक गुच्छा आउटपुट करता है जब तक यह पूरा नहीं हो जाता है, या चुप्पी अगर यह कुछ भी प्रिंट नहीं करता है और फिर खोल देता है। - MrMas


यूनिक्स जैसी प्रणालियों पर आप श्रव्य-घंटी बज सकते हैं:

echo -e "\a"

19
2017-10-10 18:29



मैक पर एक संदेश अधिसूचना के अलावा यह वास्तव में उपयोगी है - Sirens
के समान tput bel - Dwight Spencer


मैंने मैकोज़ एक्स के लिए एक साधारण टूल बनाया है, जो वास्तव में ऐसा करता है। https://github.com/vikfroberg/brb

स्थापना

$ npm install -g brb

अनुदेश

$ sleep 3; brb

8
2018-06-08 10:43





मैंने अभी उपयोग करना शुरू कर दिया है notifu सिग्विन से डेस्कटॉप अधिसूचनाओं के लिए। यह विंडोज के लिए एक कमांड लाइन अधिसूचना ऐप है।

उदाहरण:

ls -l && /c/notifu-1.6/notifu64 /m "This is a simple Notifu message."

4
2017-09-13 07:21





ध्वनि अधिसूचना प्राप्त करने के लिए आप इसका उपयोग कर सकते हैं spd-say "Some text"। उदाहरण:

some-command; spd-say "Yo"

4
2017-12-15 17:54



क्या ओएस? मैं इसे मैक या उबंटू पर नहीं देखता हूं - Edward Falk
@ एडवर्डफॉक मैं उबंटू का उपयोग कर रहा हूं - milkovsky
ठीक है, मैं एक सुंदर पुराने संस्करण का उपयोग कर रहा हूँ, तो शायद यह नए संस्करणों में है। - Edward Falk
यह सिर्फ एक टेक्स्ट-टू-स्पीच एप्लिकेशन है। आप इसे स्थापित कर सकते हैं sudo apt-get install speech-dispatcher। या विकल्पों का उपयोग करें askubuntu.com/questions/501910/... - milkovsky
आह, डिफ़ॉल्ट रूप से स्थापित नहीं है? मुझे इसके बारे में सोचना चाहिए था। लिंक के लिए धन्यवाद। - Edward Falk


लिनक्स के लिए, प्रत्येक बार अधिसूचना के लिए कमांड टाइप किए बिना स्वचालित रूप से ऐसा करने के लिए निफ्टी चाल है।

पहले autokey स्थापित करें। यह विभिन्न कीस्ट्रोक के लिए क्रियाओं को परिभाषित करने में मदद करता है।

sudo apt-get install autokey-gtk

अब, autokey में एक नया वाक्यांश परिभाषित करें और हॉटकी को Alt + Enter के रूप में असाइन करें। यह वाक्यांश जोड़ें:

; notify-send "Job finished!" &
  #

ध्यान दें कि पहली पंक्ति के बाद एक नई लाइन महत्वपूर्ण है।

इसके अलावा, एक विंडो फ़िल्टर जोड़ें। मैं गुना और टर्मिनल का उपयोग करता हूं। आप जो भी टर्मिनल उपयोग करते हैं उसे शामिल करें।

.*(guake)|(Terminal).*

हो गया!!

अब, जब भी आपको कमांड के लिए सूचनाएं प्राप्त करने की आवश्यकता होती है, तो इसे एंटर / रिटर्न के बजाय Alt + Enter का उपयोग करके चलाएं।

स्रोत: http://dotpad.blogspot.in/2014/12/notification-when-command-finished.html


3
2017-12-27 12:39





यद्यपि अन्य उत्तरों पहले से ही समाप्त नौकरी पर अधिसूचनाएं प्राप्त करने के अधिकांश तरीकों को कवर करते हैं, लेकिन मैं अपने प्रश्नों को निम्नलिखित प्रारूप में पूछने के बाद से दो सेंट देना चाहता हूं:

जिस स्थान पर मैं काम करता हूं वह आदेश है जो निष्पादित करने में लंबा समय लगता है।

मेरी भी यही समस्या है। कभी-कभी 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/

उम्मीद है कि यह मदद की!


3
2018-06-23 11:15



ठीक है, तो "pushover" एक ऐसी वेब सेवा है जो "pushover" ऐप इंस्टॉल किए गए फ़ोन पर अधिसूचनाएं भेजती है? - Edward Falk
यह एक वेब सेवा है जो अधिसूचनाएं भेजती है एक आधुनिक वेब ब्राउज़र के साथ फोन, कंप्यूटर, और सबकुछ। तो, आप अपने पीसी और फोन पर पुशओवर खोल सकते हैं और सभी उपकरणों पर अधिसूचित किया जा सकता है। साफ, हुह? :-) - Thatkookooguy


मैंने लिखा ntfy बिल्कुल इस उद्देश्य के लिए। यह है पार मंच और भी खुद ब खुद लंबे समय तक चलने वाले आदेश खत्म होने पर अधिसूचनाएं भेजें।

यदि आपके पास पाइथन है pip (अधिकांश लिनक्स डिस्ट्रोज़ और मैकोज़ में यह है), यहां इसे इंस्टॉल करने और स्वचालित सूचनाएं सक्षम करने का तरीका बताया गया है:

$ sudo pip install ntfy
$ echo 'eval "$(ntfy shell-integration)"' >> ~/.bashrc
$ # restart your shell

इसे देखें http://ntfy.rtfd.io

इसके अलावा, यह भी कर सकते हैं:

  • टर्मिनल अग्रभूमि में होने पर स्वत: अधिसूचनाओं को दबाएं (एक्स 11, iTerm2 और टर्मिनल.एप डिफ़ॉल्ट रूप से समर्थित और सक्षम)
  • क्लाउड-आधारित नोटिफिकेशन भेजें (पुशओवर, पुशबलेट, और एक्सएमपीपी)
  • प्रक्रिया समाप्त होने पर सूचनाएं भेजने के लिए उपयोग किया जाना चाहिए (उपरोक्त स्वचालित समर्थन नहीं)
  • मैन्युअल रूप से अधिसूचनाएं भेजें (स्क्रिप्ट में उपयोग के लिए अच्छा!)

3
2018-05-19 15:44



आप पर अच्छा। यह वास्तव में सबसे उपयोगी जवाब है। - A. M. Bittlingmayer
मैं सहमत हूँ। मैं इसे अपने डेस्कटॉप पर एक अधिसूचना प्रदर्शित करने के लिए उपयोग करता हूं और एक ही समय में अधिसूचना को अपने फोन पर धक्का देता हूं। - Michael


यदि आप अपने इंटरैक्टिव शैल के रूप में सीएसएच या टीसीएसएच का उपयोग करते हैं, तो आप इसका उपयोग कर सकते हैं notify आदेश:

% long-running-command &
[1] 14431
% notify %1
% 
(later, when the command finishes)
[1]    Done                          long-running-command

आप के साथ बैश में एक समान प्रभाव प्राप्त कर सकते हैं set -b या set -o notify

यह शायद आपकी आवश्यकताओं को पूरा नहीं करता है, क्योंकि यह सब एक संदेश प्रिंट करता है; मुझे नहीं लगता कि इसे खिड़की को पॉप करने या घंटी बजाने के लिए कॉन्फ़िगर किया जा सकता है।


1
2017-10-11 21:58



मैं नौकरी खत्म होने पर पता लगाने के लिए खोल को देखने से बचने की कोशिश कर रहा हूं। हालांकि धन्यवाद! - Utkarsh Sinha