কোনও কাজ / প্রক্রিয়া শেষ হলে আমি কীভাবে একটি বিজ্ঞপ্তিটি ট্রিগার করতে পারি?


86

আমি যে স্থানে কাজ করি সেগুলিতে কমান্ড রয়েছে যা কার্যকর করতে দীর্ঘ সময় নেয়।

কমান্ডের প্রয়োগ শেষ হয়ে গেলে কি আমাকে জানাতে কোনও আদেশ / ইউটিলিটি ব্যবহার করতে পারি? এটি একটি পপআপ উইন্ডো বা কিছুটা শব্দ হতে পারে।


1
@ স্লহ্যাকের গৃহীত উত্তরটি দুর্দান্ত - আমার বুঝতে হবে এটি কার্যকর fg;say "Job finished"হবে। তবে ... এমন কি কোনও উপায় আছে যে এটি আরও স্বয়ংক্রিয়ভাবে পরিচালিত হতে পারে - যেমন বেল বাজানো বা কোনও কাজ শেষ হওয়ার পরে বিজ্ঞপ্তি দেওয়া যা এক মিনিটের মতো প্রান্তিকের চেয়েও বেশি সময় নেয়? এখানে কি শেলের ভেরিয়েবল আছে, যেমন ব্যাশ-এ, শেষ কমান্ডের সময় অতিবাহিত?
ক্রাজি গ্লিউ

... ২ ঘন্টা পরে, স্ট্যাকওভারফ্লো / প্রশ্নগুলি পাওয়া গেছে / 1862510/ … ... পুট '(($ টাইমার_শো> $ ONG দীর্ঘ_আরমানটাইম: -300})) এবং & টাইমার_স্টপে "দীর্ঘ চলমান কাজ" "বলে ... এরপরে, ইমাক্সের সংকলন কমান্ডগুলিতে যুক্ত করুন ... এবং আমার পেবল ওয়াচটি অবহিত করুন (আমি ফোন বিজ্ঞপ্তিগুলি ঘৃণা করি)
ক্রাজি গ্লিউ

উত্তর:


119

কমান্ড চালানোর আগে সাধারণত যদি আপনি এটি জানেন তবে আপনি এটি দিয়ে এটি শুরু করতে পারেন:

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উচিত। যদিও আমি এখনই নির্ভরযোগ্যভাবে এটি পরীক্ষা করতে পারিনি। আরও জানতে "রিং বেল" অনুসন্ধান করুন।

  • উপর Mac OS X এর , আপনি একটি ফাইন্ডারে ডায়ালগ পপ আপ 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একটি দ্বারা GTK ডায়ালগ বক্সের কম্যান্ড লাইন থেকে বলা দেখাতে পারেন। এই স্ট্যাক ওভারফ্লো প্রশ্নটিও দেখুন: লিনাক্সে ব্যাশ স্ক্রিপ্ট থেকে একটি বার্তা বাক্স দেখাচ্ছে । এটি আপনার প্রিয় প্যাকেজ ম্যানেজারের মাধ্যমে ইনস্টল করা যেতে পারে।

    zenity --info --text="Job finished"
    
  • কিছু বিতরণ থাকতে পারে xmessage। বিশেষত জিটিকে পরিবেশের জন্য রয়েছে gxmessage

  • ডেস্কটপ পরিবেশে যেগুলি ডেস্কটপ বিজ্ঞপ্তি নির্দিষ্টকরণ যেমন উবুন্টু এবং জিনোম প্রয়োগ করে , সেখানে একটি বিজ্ঞপ্তি সিস্টেম রয়েছে যা আপনি notify-send(অংশটির libnotify) সাহায্যে ট্রিগার করতে পারেন ।

    notify-send "Job finished!"
    
  • কেডিএ ব্যবহার করে kdialogউদাহরণস্বরূপ:

    kdialog --passivepopup 'Job finished'
    

আমাকে জানতে দিন আপনি কোন আদেশ ব্যবহার করেছেন! আমি পাশাপাশি কিছু অন্যান্য বিকল্প যুক্ত।
slhck

আমি বিজ্ঞপ্তি-প্রেরণ এবং xmessage সঙ্গে চারপাশে ঘুরে বেড়াচ্ছি। দুজনেরই মনে হয় আকর্ষণীয়! - এখানে পরবর্তী জিনিস আমি খুঁজছিলাম করছি superuser.com/questions/345463/...
Utkarsh ফিরে সিনহা

2
ম্যাক ওএস এক্সে, আপনি কমান্ড-লাইন ইউটিলিটি "বলুন" ব্যবহার করতে পারেন। এছাড়াও অনেকগুলি ভয়েস পাওয়া যায়, "বলুন -h";) পরীক্ষা করুন
ত্রিশম

1
কেন আপনি পরামর্শ দিচ্ছেন যে "কমান্ড-পরে" অবিচ্ছিন্নভাবে চালানো উচিত? তুমি বলতে (command; command-after) &চাও?
জি ম্যান

এই সমাধানটি কনসোল ব্যবহারকারীদের জন্য এবং এটি কোনও নিখুঁত সমাধান নয় কারণ এটি আপনার কমান্ডের উপর নির্ভর করে হয় হয় সম্পূর্ণরূপে ভার্বোজ হওয়া বা সম্পূর্ণ নীরব (কোনও আউটপুট নয়) যতক্ষণ না প্রম্পট প্রত্যাবর্তন করে। যাইহোক, আমি সাহায্যের সন্ধান করতে এসে আমার ঠিক এটির প্রয়োজন ছিল। আপনি কনসোলকে একটি বিজ্ঞপ্তি পপ-আপ করার জন্য, একটি শব্দ বাজানোর জন্য কনফিগার করতে পারেন, তারপরে আপনাকে শেল পর্যবেক্ষণ চালু করতে হবে। যদি আপনার কমান্ডটি সম্পূর্ণ না হওয়া অবধি একগুচ্ছ স্টাফ আউট করে দেয় বা নিঃশব্দ হয়ে থাকে তবে যদি এটি কিছু মুদ্রণ না করে এবং শেলটি ফিরে আসে silence
মিঃমাস



5

একটি শব্দ বিজ্ঞপ্তি পেতে আপনি ব্যবহার করতে পারেন spd-say "Some text"। উদাহরণ:

some-command; spd-say "Yo"

কি ওএস? আমি এটি ম্যাক বা উবুন্টুতে দেখছি না
এডওয়ার্ড ফালক

@ অ্যাডওয়ার্ডফালক আমি উবুন্টু
দুধভস্কি

ঠিক আছে, আমি একটি সুন্দর পুরানো সংস্করণ ব্যবহার করছি, তাই এটি সম্ভবত আরও নতুন সংস্করণে রয়েছে।
এডওয়ার্ড ফ্যাল্ক

1
এটি কেবল একটি পাঠ্য থেকে স্পিচ অ্যাপ্লিকেশন। আপনি এটি মাধ্যমে ইনস্টল করতে পারেন sudo apt-get install speech-dispatcher। অথবা বিকল্পগুলি জিজ্ঞাসা করুন
জিজ্ঞাসা /

আহ, ডিফল্টরূপে ইনস্টলড না? আমার এটা সম্পর্কে চিন্তা করা উচিত ছিল। লিঙ্কের জন্য ধন্যবাদ।
এডওয়ার্ড ফ্যালক

4

সাইগউইন থেকে ডেস্কটপ বিজ্ঞপ্তির জন্য আমি সবেমাত্র নোটিফু ব্যবহার শুরু করেছি । এটি উইন্ডোজের জন্য একটি কমান্ড লাইন বিজ্ঞপ্তি অ্যাপ।

উদাহরণ:

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

4

আমি ntfyঠিক এই উদ্দেশ্যে লিখেছি । এটি ক্রস প্ল্যাটফর্ম এবং দীর্ঘ চলমান কমান্ড সমাপ্ত হওয়ার পরে স্বয়ংক্রিয়ভাবে বিজ্ঞপ্তিগুলি পাঠাতে পারে ।

যদি আপনার কাছে পাইথনের pip(বেশিরভাগ লিনাক্সের ডিস্ট্রোস এবং ম্যাকোএস থাকে) থাকে তবে এটি কীভাবে ইনস্টল করবেন এবং স্বয়ংক্রিয়ভাবে বিজ্ঞপ্তিগুলি সক্ষম করবেন তা এখানে রয়েছে:

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

এটি http://ntfy.rtfd.ioদেখুন

এটির পাশাপাশি এটি এটিও করতে পারে:

  • টার্মিনালটি অগ্রভাগে থাকা অবস্থায় স্বয়ংক্রিয় নোটিফিকেশনগুলি সাফ করুন (এক্স 11, আইটার্ম 2 এবং টার্মিনাল.অ্যাপ সমর্থিত এবং ডিফল্টরূপে সক্ষম করা হয়েছে)
  • মেঘ-ভিত্তিক বিজ্ঞপ্তিগুলি পাঠান (পুশওভার, পুশবলেট এবং এক্সএমপিপি)
  • কোনও প্রক্রিয়া শেষ হলে বিজ্ঞপ্তি প্রেরণের জন্য ব্যবহার করুন (পূর্বোক্ত স্বয়ংক্রিয় সমর্থন নয়)
  • ম্যানুয়ালি বিজ্ঞপ্তিগুলি প্রেরণ করুন (স্ক্রিপ্টগুলিতে ব্যবহারের জন্য ভাল!)

তোমার জন্য ভাল. এটি সত্যিই সবচেয়ে ব্যবহারযোগ্য উত্তর।
অ্যাডাম বিটলিংমায়ার

আমি রাজী. আমি এটি আমার ডেস্কটপে একটি বিজ্ঞপ্তি প্রদর্শন করতে এবং একই সাথে আমার ফোনে বিজ্ঞপ্তিটি চাপতে ব্যবহার করি।
মাইকেল 20

3

লিনাক্সের জন্য, প্রতিবার বিজ্ঞপ্তির জন্য কোনও কমান্ড টাইপ না করে স্বয়ংক্রিয়ভাবে এটি করার একটি নিফটি কৌশল রয়েছে।

প্রথমে অটোকি ইনস্টল করুন। এটি বিভিন্ন কীস্ট্রোকের জন্য ক্রিয়া সংজ্ঞায়িত করতে সহায়তা করে।

sudo apt-get install autokey-gtk

এখন, অটোকিতে একটি নতুন বাক্যাংশ সংজ্ঞায়িত করুন এবং হটকি Alt + এন্টার হিসাবে নির্ধারণ করুন। এই শব্দটি যুক্ত করুন:

; notify-send "Job finished!" &
  #

মনে রাখবেন যে প্রথম লাইনের পরে একটি নতুন লাইন গুরুত্বপূর্ণ।

এছাড়াও, একটি উইন্ডো ফিল্টার যুক্ত করুন। আমি গুয়াক এবং টার্মিনাল ব্যবহার করি। আপনি যে কোনও টার্মিনাল ব্যবহার করেন তা অন্তর্ভুক্ত করুন।

.*(guake)|(Terminal).*

তুমি করেছ!!

এখন, প্রতিবারই যখনই আপনাকে কোনও আদেশের জন্য বিজ্ঞপ্তিগুলি পাওয়া দরকার, এন্টার / রিটার্নের পরিবর্তে Alt + Enter ব্যবহার করে এটি চালান।

সূত্র: http://dotpad.blogspot.in/2014/12/notifications-when-command-finished.html


3

যদিও অন্য উত্তরগুলি ইতিমধ্যে একটি সমাপ্ত কাজের বিষয়ে বিজ্ঞপ্তি পাওয়ার বেশিরভাগ উপায়কে কভার করেছে, আপনি নিম্ন বিন্যাসে আপনার প্রশ্ন জিজ্ঞাসা করার কারণে আমি আমার দুটি সেন্ট দিতে চাই:

আমি যে স্থানে কাজ করি সেগুলিতে কমান্ড রয়েছে যা কার্যকর করতে দীর্ঘ সময় নেয়।

আমি একই সমস্যা আছে। কখনও কখনও কিছু 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 :-("

সুতরাং, যদি কমান্ডটি একটি সঠিক প্রস্থান কোড ফেরত দেয় তবে প্রথম ধাক্কা কার্যকর করা হবে। একটি ত্রুটিতে, দ্বিতীয়টি কার্যকর করা হবে।

এর মধ্যে আপনাকে পুশওভারে একটি ব্যবহারকারী তৈরি করতে হবে এবং https://pushover.net/ থেকে বিজ্ঞপ্তি প্রেরণের জন্য একটি অ্যাপ্লিকেশন নিবন্ধন করতে হবে

আশা করি এটি সাহায্য করেছে!


ঠিক আছে, সুতরাং "পুশওভার" এমন একটি ওয়েব পরিষেবা যা "পুশওভার" অ্যাপ্লিকেশন ইনস্টল থাকা ফোনে বিজ্ঞপ্তি পাঠায়?
এডওয়ার্ড ফ্যাল্ক

1
এটি একটি ওয়েব পরিষেবা যা আধুনিক ওয়েব ব্রাউজারের সাহায্যে ফোন, কম্পিউটার এবং সমস্ত কিছুতে বিজ্ঞপ্তি প্রেরণ করে । সুতরাং, আপনার পিসি এবং ফোনে পুশওভার খোলা থাকতে পারে এবং সমস্ত ডিভাইসে বিজ্ঞপ্তি দেওয়া যেতে পারে। ঝরঝরে, হাহ? :-)
থটকুকুগুয়ে

1

আপনি যদি নিজের ইন্টারেক্টিভ শেল হিসাবে csh বা tcsh ব্যবহার করেন তবে আপনি notifyকমান্ডটি ব্যবহার করতে পারেন :

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

আপনি set -bবা এর সাথে ব্যাশে একইরকম প্রভাব অর্জন করতে পারেন set -o notify

এটি সম্ভবত আপনার প্রয়োজনীয়তাগুলি পূরণ করে না, কারণ এটি সমস্ত কিছু একটি বার্তা প্রিন্ট করে; আমি মনে করি না এটি একটি উইন্ডো পপ আপ বা বেলটি বাজানোর জন্য কনফিগার করা যেতে পারে।


আমি কোনও কাজ শেষ হয়েছে কিনা তা জানতে শেলের দিকে তাকানো এড়াতে চাইছি। ধন্যবাদ যদিও!
উত্কর্ষ সিনহা


1

আপনি যদি ব্যবহার করছেন npmতবে নোড-নোটিফায়ার একটি ক্রস প্ল্যাটফর্ম সমাধান সরবরাহ করে

notify -t "Agent Coulson" --icon https://raw.githubusercontent.com/mikaelbr/node-notifier/master/example/coulson.jpg -m "Well, that's new. "

পূর্বরূপ

  • লিনাক্স কে

লিনাক্স কে

  • উইন্ডোজ

উইন্ডোজ

  • ম্যাক অপারেটিং সিস্টেম

ম্যাক

  • গোঁ গোঁ শব্দ করা

গোঁ গোঁ শব্দ করা


1

আশা করি আমি কয়েক বছর আগে এই থ্রেডটি লক্ষ্য করতাম। আমার সমাধানটি মূলত স্লহকের মতোই ছিল তবে আমি একটি স্ক্রিপ্ট লিখেছিলাম। আমি সব সময় এটি ব্যবহার। এটি ভাগ করতে এখানে পোস্ট করা।

#!/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"এএনএসআই অব্যাহতি ক্রমটি হ'ল উইন্ডোটির শিরোনাম বারে বার্তাটি চালানো হয়েছিল যা থেকে এটি কার্যকর করা হয়েছিল। বার্তাটি কোন উইন্ডোটি থেকে এসেছিল তা কোন উইন্ডোটি দেখতে সক্ষম হচ্ছিল কখনও কখনও আমি এটি দেখতে খুব সহজ মনে করি।


1

সুতরাং এটি বেশ দেরিতে আসে, তবে আমি এটি করার জন্য একটি সিস্টেম ব্যবহার শুরু করেছি: আমার কাছে একটি বাশ স্ক্রিপ্ট রয়েছে যা পরে যে কোনও কমান্ড প্রয়োগ করা হয় তা কার্যকর করে utes

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"

এবং তারপরে আমি কেবল এন

n bundle install
n npm install


0

আমি একটি অ্যাপ্লিকেশন তৈরি করেছি যা কোনও প্রক্রিয়া শেষ হয়ে গেলে আপনার অ্যান্ড্রয়েড ফোনে একটি বিজ্ঞপ্তি প্রেরণ করবে যাতে আপনার কম্পিউটারে টিচার হওয়ার দরকার নেই।

ইনস্টল করুন, তারপরে ;notifier.shআপনার কমান্ডের শেষে যুক্ত করুন ।

উদাহরণস্বরূপ, যদি আপনার আদেশটি ছিল make install, আপনি আপনার আদেশটি তৈরি করবেন:

make install; notifier.sh

https://notifier.sh

https://play.google.com/store/apps/details?id=sh.notifier

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.