내가 일하는 장소에는 명령을 실행하는 데 시간이 오래 걸립니다.
명령 실행이 끝났을 때 알려주는 데 사용할 수있는 명령 / 유틸리티가 있습니까? 팝업 창이거나 약간의 소리 일 수 있습니다.
내가 일하는 장소에는 명령을 실행하는 데 시간이 오래 걸립니다.
명령 실행이 끝났을 때 알려주는 데 사용할 수있는 명령 / 유틸리티가 있습니까? 팝업 창이거나 약간의 소리 일 수 있습니다.
답변:
일반적으로 명령을 실행 하기 전에 이를 알고 있다면 다음 과 같이 시작할 수 있습니다.
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 vs. GNU Linux 등) 실제로 작동하지만 tput bel
해야합니다. 그래도 지금은 확실하게 테스트 할 수 없었습니다. 자세한 내용을 보려면 "링 벨"을 검색하십시오.
에 맥 OS X , 당신은 찾기 대화 상자를 팝업 애플 스크립트를 사용할 수 있습니다 :
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 대화 상자를 표시 할 수 있습니다. 이 스택 오버플로 질문 : linux의 bash 스크립트에서 메시지 상자 표시를 참조하십시오 . 선호하는 패키지 관리자를 통해 설치할 수 있습니다.
zenity --info --text="Job finished"
Ubuntu 및 GNOME 과 같은 데스크탑 알림 사양 을 구현하는 데스크탑 환경 에는 (일부 )로 트리거 할 수있는 알림 시스템이 있습니다 .notify-send
libnotify
notify-send "Job finished!"
KDE 는 kdialog
예를 들어 다음을 사용합니다 .
kdialog --passivepopup 'Job finished'
(command; command-after) &
?
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/…
나는 ntfy
이 목적을 위해 정확히 썼다 . 그것은이다 크로스 플랫폼 할 수 있습니다 자동으로 긴 실행 명령이 완료 될 때 알림을 보낼 수 있습니다.
파이썬 pip
(대부분의 Linux 배포판과 MacOS에 있음)이있는 경우이를 설치하고 자동 알림을 활성화하는 방법은 다음과 같습니다.
$ sudo pip install ntfy
$ echo 'eval "$(ntfy shell-integration)"' >> ~/.bashrc
$ # restart your shell
http://ntfy.rtfd.io 에서 확인하십시오
그 외에도 다음을 수행 할 수 있습니다.
Linux의 경우 매번 알림을 위해 명령을 입력하지 않아도 자동으로 수행하는 멋진 트릭이 있습니다.
먼저 자동 키를 설치하십시오. 이를 통해 다양한 키 입력에 대한 작업을 정의 할 수 있습니다.
sudo apt-get install autokey-gtk
이제 자동 키에서 새 문구를 정의하고 단축키를 Alt + Enter로 지정하십시오. 이 문구를 추가하십시오 :
; notify-send "Job finished!" &
#
첫 번째 줄 다음에 새 줄이 중요합니다.
또한 창 필터를 추가하십시오. 구 아나 터미널을 사용합니다. 다른 터미널을 사용하십시오.
.*(guake)|(Terminal).*
끝났습니다 !!
이제 명령에 대한 알림을 받아야 할 때마다 Enter / Return 대신 Alt + Enter를 사용하여 명령을 실행하십시오.
출처 : http://dotpad.blogspot.in/2014/12/notification-when-command-finished.html
다른 답변은 이미 완료된 작업에 대한 알림을받는 대부분의 방법을 다루었지만 다음과 같은 형식으로 질문 한 후 2 센트를주고 싶습니다.
내가 일하는 장소에는 명령을 실행하는 데 시간이 오래 걸립니다.
나는 같은 문제를 가지고있다. 때로는 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 :-("
따라서 명령이 올바른 종료 코드를 반환하면 첫 번째 푸시가 실행됩니다. 오류가 발생하면 두 번째 오류가 실행됩니다.
종종 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
또는을 사용 하여 bash에서 비슷한 효과를 얻을 수 있습니다 set -o notify
.
메시지를 인쇄하는 것만으로는 요구 사항을 충족하지 못할 수 있습니다. 창을 열거 나 종을 울리도록 구성 할 수 있다고 생각하지 않습니다.
'awk'시도가있는 시스템에서
awk 'BEGIN{ print "\a" }'
나를 위해 일하는 유일한 사람이었습니다.
\a
( trinth 's answer ).
이 스레드가 몇 년 전에 나타났습니다. 내 솔루션은 본질적으로 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 이스케이프 시퀀스입니다. 메시지가 나온 창을 확인할 수있는 경우가 종종 있습니다.
그래서 이것은 상당히 늦었지만 시스템을 사용 하여이 작업을 시작했습니다. 나중에 전달 된 명령을 실행하는 bash 스크립트가 있습니다.
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
프로세스가 끝나면 안드로이드 폰에 알림을 보내어 컴퓨터에 테 더링 할 필요가없는 앱을 만들었습니다.
설치 한 다음 ;notifier.sh
명령 끝에 추가 하십시오.
예를 들어, 명령이 인 경우 명령을 make install
작성하십시오.
make install; notifier.sh
fg;say "Job finished"
. 그러나 ... 더 자동화 할 수있는 방법이 있습니까? 즉, 벨을 울리거나 분과 같은 임계 값을 초과하는 작업이 완료된 후에 알릴 수 있습니까? 마지막 명령의 경과 시간 인 bash와 같은 쉘 변수가 있습니까?