สถานที่ที่ฉันทำงานมีคำสั่งที่ใช้เวลาดำเนินการนาน
มีคำสั่ง / ยูทิลิตี้ที่ฉันสามารถใช้เพื่อแจ้งให้ฉันทราบเมื่อการดำเนินการคำสั่งสิ้นสุดหรือไม่ อาจเป็นหน้าต่างป๊อปอัพหรืออาจมีเสียงเล็กน้อย
สถานที่ที่ฉันทำงานมีคำสั่งที่ใช้เวลาดำเนินการนาน
มีคำสั่ง / ยูทิลิตี้ที่ฉันสามารถใช้เพื่อแจ้งให้ฉันทราบเมื่อการดำเนินการคำสั่งสิ้นสุดหรือไม่ อาจเป็นหน้าต่างป๊อปอัพหรืออาจมีเสียงเล็กน้อย
คำตอบ:
โดยทั่วไปหากคุณรู้สิ่งนี้ก่อนที่จะเรียกใช้คำสั่งคุณสามารถเริ่มได้ด้วย:
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
ตอนนี้…สิ่งที่คุณต้องการทำหลังจากนี้ขึ้นอยู่กับสภาพแวดล้อมของคุณ
บนระบบใด ๆคุณสามารถ"แหวน" ระฆังขั้ว ขึ้นอยู่กับระบบที่แน่นอนของคุณสิ่งที่ใช้งานได้จริง (BSD กับ GNU Linux ฯลฯ ) แต่tput bel
ควรทำ แม้ว่าตอนนี้ฉันไม่สามารถทดสอบได้อย่างน่าเชื่อถือ ค้นหา "เสียงกระดิ่ง" เพื่อค้นหาเพิ่มเติม
ในMac OS Xคุณสามารถใช้ AppleScript เพื่อเปิดกล่องโต้ตอบ Finder:
osascript -e 'tell Application "Finder" to display dialog "Job finished" '
คุณสามารถให้มันพูดอะไรบางอย่างกับคุณ:
say "Job finished"
หรือคุณสามารถใช้ระบบการแจ้งเตือนของ Mountain Lion:
sudo gem install terminal-notifier # <= only need to do this once
terminal-notifier -message "Job finished!" -title "Info"
ในGNOME , zenity
สามารถแสดง GTK กล่องโต้ตอบเรียกจากบรรทัดคำสั่ง ดูเพิ่มเติมคำถามนี้กองมากเกิน: แสดงกล่องข้อความจากสคริปต์ทุบตีในลินุกซ์ มันสามารถติดตั้งผ่านผู้จัดการแพคเกจที่คุณชื่นชอบ
zenity --info --text="Job finished"
xmessage
กระจายบางคนอาจมี โดยเฉพาะสำหรับสภาพแวดล้อม GTK gxmessage
มี
ในสภาพแวดล้อมเดสก์ท็อปที่ใช้ข้อกำหนดการแจ้งเตือนของเดสก์ท็อปเช่นUbuntuและGNOME จะมีระบบการแจ้งเตือนที่คุณสามารถทริกเกอร์ด้วยnotify-send
(ส่วนหนึ่งlibnotify
)
notify-send "Job finished!"
KDEใช้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
คุณสามารถติดตั้งผ่านทาง หรือใช้ทางเลือกaskubuntu.com/questions/501910/…
ฉันเพิ่งเริ่มใช้notifuสำหรับการแจ้งเตือนทางเดสก์ท็อปจาก Cygwin มันเป็นแอพแจ้งเตือนบรรทัดคำสั่งสำหรับ Windows
ตัวอย่าง:
ls -l && /c/notifu-1.6/notifu64 /m "This is a simple Notifu message."
ฉันเขียนntfy
เพื่อวัตถุประสงค์นี้ เป็นแพลตฟอร์มข้ามและสามารถส่งการแจ้งเตือนโดยอัตโนมัติเมื่อคำสั่งที่ใช้เวลานานสิ้นสุด
หากคุณมี Python pip
(ส่วนใหญ่ Linux distros และ MacOS มี) ต่อไปนี้เป็นวิธีการติดตั้งและเปิดใช้งานการแจ้งเตือนอัตโนมัติ:
$ sudo pip install ntfy
$ echo 'eval "$(ntfy shell-integration)"' >> ~/.bashrc
$ # restart your shell
ตรวจสอบที่http://ntfy.rtfd.io
นอกจากนั้นมันยังสามารถ:
สำหรับ Linux มีเคล็ดลับที่ดีในการทำสิ่งนี้โดยอัตโนมัติโดยไม่ต้องพิมพ์คำสั่งสำหรับการแจ้งเตือนทุกครั้ง
เริ่มแรกติดตั้ง autokey สิ่งนี้จะช่วยกำหนดการกระทำสำหรับการกดแป้นที่แตกต่างกัน
sudo apt-get install autokey-gtk
ตอนนี้กำหนดวลีใหม่ใน autokey และกำหนดปุ่มลัดเป็น Alt + Enter เพิ่มวลีนี้:
; notify-send "Job finished!" &
#
โปรดทราบว่าบรรทัดใหม่หลังจากบรรทัดแรกมีความสำคัญ
รวมทั้งเพิ่มตัวกรองหน้าต่าง ฉันใช้ guake และ terminal รวมเทอร์มินัลอื่นที่คุณใช้
.*(guake)|(Terminal).*
คุณทำเสร็จแล้ว !!
ตอนนี้ทุกครั้งที่คุณต้องการรับการแจ้งเตือนสำหรับคำสั่งให้รันโดยใช้ Alt + Enter แทน Enter / Return
ที่มา: 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
}
สิ่งนี้ใช้แอป Pushover เพื่อส่งการแจ้งเตือนไปยังโทรศัพท์ของฉัน วิธีนี้ฉันสามารถไปทานอาหารกลางวันหรือเข้าร่วมการประชุมและยังคงได้รับแจ้งเกี่ยวกับงานที่ฉันเริ่มบนคอมพิวเตอร์ก่อนที่ฉันจะจากไป
ฉันใช้ในลักษณะดังต่อไปนี้:
command_to_run && push "yes! command finished successfully!" || push "awww man! something failed :-("
ดังนั้นหากคำสั่งส่งคืนรหัสออกที่ถูกต้องการกดครั้งแรกจะถูกดำเนินการ ในข้อผิดพลาดอันที่สองจะถูกประหารชีวิต
Ofc คุณต้องสร้างผู้ใช้ที่ Pushover และลงทะเบียนแอพเพื่อส่งการแจ้งเตือนจาก https://pushover.net/
หวังว่านี่จะช่วยได้!
หากคุณใช้ 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
สิ่งนี้อาจไม่ตรงกับความต้องการของคุณเนื่องจากทั้งหมดจะพิมพ์ข้อความ ฉันไม่คิดว่ามันสามารถกำหนดค่าให้เปิดหน้าต่างหรือส่งเสียงกริ่ง
หากคุณกำลังใช้npm
แล้วโหนดแจ้งให้แก้ปัญหาข้ามแพลตฟอร์ม
notify -t "Agent Coulson" --icon https://raw.githubusercontent.com/mikaelbr/node-notifier/master/example/coulson.jpg -m "Well, that's new. "
หวังว่าฉันจะสังเกตเห็นหัวข้อนี้ปีที่ผ่านมา วิธีการแก้ปัญหาของฉันเป็นหลักเช่นเดียวกับของ slhck แต่ฉันเขียนสคริปต์ ฉันจะใช้มันตลอดเวลา. โพสต์ที่นี่เพื่อแบ่งปัน
#!/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"
เป็นลำดับการหลบหนีของ ANSI เพื่อนำข้อความไปไว้ในแถบชื่อเรื่องของหน้าต่างที่ถูกเรียกใช้งาน ฉันพบว่ามันค่อนข้างมีประโยชน์ในบางครั้งที่สามารถเห็นหน้าต่างที่เป็นข้อความที่มาจาก
ดังนั้นสิ่งนี้มาสายค่อนข้างช้า แต่ฉันได้เริ่มใช้ระบบเพื่อทำสิ่งนี้: ฉันมีสคริปต์ทุบตีซึ่งจะเรียกใช้งานคำสั่งใดก็ตามที่ถูกส่งผ่านไปหลังจากนั้น
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
n bundle install
n npm install
ความเป็นไปได้อีกอย่างหนึ่งคือการใช้alert
งานบน Linux
>any-command; alert
มันให้การแจ้งเตือนเช่นเดียวกับในภาพ การแจ้งเตือน
ฉันสร้างแอพที่จะส่งการแจ้งเตือนไปยังโทรศัพท์ Android ของคุณเมื่อกระบวนการสิ้นสุดลงดังนั้นคุณไม่จำเป็นต้องเชื่อมต่อกับคอมพิวเตอร์ของคุณ
ติดตั้งจากนั้นเพิ่ม;notifier.sh
ไปยังจุดสิ้นสุดของคำสั่งของคุณ
ตัวอย่างเช่นหากคำสั่งของคุณเป็นmake install
คุณจะทำให้คำสั่งของคุณ:
make install; notifier.sh
fg;say "Job finished"
มันจะได้ผล แต่ ... มีวิธีใดที่มันจะเป็นไปโดยอัตโนมัติเพิ่มเติม - เช่นกดกริ่งหรือแจ้งให้ทราบหลังจากเสร็จงานใด ๆ ที่ใช้เวลามากกว่าเกณฑ์เช่นนาที? มีตัวแปรเชลล์เช่นใน bash นั่นคือเวลาที่ผ่านไปของคำสั่งสุดท้ายหรือไม่