밤낮으로 작동하는 도구는 때때로 중요한 정보를 벽에 게시합니다. 잠자는 동안 이 출력을 파일로 리디렉션할 수 있는 방법이 있나요? 또는 담벼락에 게시된 메시지 로그를 보관합니까, 아니면 이를 활성화할 수 있는 방법이 있습니까?
답변1
wall
시스템 로그에 기록하는 몇 가지 구현이 있습니다 .http://salsa.debian.org/debian/sysvinit/blob/master/src/wall.c. 존재하다
맨페이지그것은 말한다:
Wall에 대한 각 호출에 대해 LOG_USER 기능 및 BR LOG_INFO 레벨을 사용하여 syslog에 알림이 기록됩니다.
애플리케이션의 동작을 제어할 수 없거나 logger
대신 쓰기를 사용하도록 지시할 수 없는 경우 일반 명령을 실행하고 write 를 사용하는 래퍼를 wall
만들 수 있습니다 . 새 디렉터리에 이 래퍼를 생성하고 새 디렉터리에 추가한 후 새 설정 으로 프로그램을 다시 시작할 수 있습니다 . 특히 프로그램을 다시 시작할 수도 없는 경우 절차에 대한 충분한 권한 범위가 있는 경우 모든 사람을 위해 시스템을 교체할 수 있습니다 . 이 예에서는 후자를 수행하는 방법을 보여 드리겠습니다. 먼저 기존 프로그램의 이름을 다음으로 바꿉니다 .wall
wall
logger
syslog
$PATH
wall
$PATH
wall
wall
wall.orig
$ command -v wall
/usr/bin/wall
$ sudo mv /usr/bin/wall /usr/bin/wall.orig
새 /usr/bin/wall
래퍼 스크립트는 다음과 같습니다.
#!/usr/bin/env sh
# wall wrapper - run wall commands with specified arguments and write
# a notification to syslog
wall.orig "$@"
logger "wall was ran with the following options: $*, result: $?"
실행 가능하게 만드는 것을 잊지 마세요:
sudo chmod +x /usr/bin/wall
일반처럼 사용하십시오 wall
.
$ wall "test message"
Broadcast message from ja@comp (pts/14) (Sat Sep 14 22:34:43 2019):
test message
작업이 있고 실행 중인 경우 logger
메시지가 라우팅되는 syslogd
파일 중 하나에 다음 메시지 로그가 표시 되어야 합니다./var/log
syslogd
Sep 14 22:34:43 comp ja: wall was ran with the following options: test message, result: 0
물론 내장된 업그레이드 메커니즘을 사용하여 시스템을 업그레이드할 때마다 원본
/usr/bin/wall
바이너리가 다시 복원될 수 있다는 점을 명심하세요.
답변2
월을 사용하여 로그인한 모든 사용자에게 기록되는 로깅 수준이 있습니다.
logger -p emerg 'The sky is falling in'
로거는 메시지를 작성합니다 /var/log
. 긴급한 우선순위 메시지의 경우 를 사용하여 사용자에게 보냅니다 wall
.