1

我正在尝试使用以下行在 bash 脚本中记录事件:

#!/bin/bash
{
...
echo "Photo backup successfully finished on $(date)" | wall
...
} &>> "/var/log/$(basename "$0").log" &

但是,在日志文件中,相应的行改为:

wall: cannot get tty name: Inappropriate ioctl for device

似乎墙输出无法定向到文件。

我怎样才能让它工作?(能够张贴到墙上并将消息记录到文件中)

4

2 回答 2

4

一种可能性是使用“tee -a”而不是“>>”。例如:

echo "Hello world"|tee -a myfile.log|wall

于 2013-10-07T01:36:00.237 回答
0

似乎只是因为当前终端与其他用户/组拥有,而不是您从中运行命令。以下示例在 Fedora 21 中测试。

检查与“w”类似的 TTY

$ w
 09:20:21 up 10:34,  2 users,  load average: 0.22, 0.27, 0.35
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
alex     pts/0     08:38   41:17   0.27s 13.46s /usr/bin/xfce4-terminal
alex     pts/1     08:39    5.00s  0.81s 13.46s /usr/bin/xfce4-terminal

进而

$ ls -l /dev/pts/*
total 0
crw--w----. 1 alex tty  136, 0 Mar 13 09:18 0
crw--w----. 1 alex tty  136, 1 Mar 13 09:22 1

然后你可以添加应该向墙发送消息的用户,组“tty”

mcedit /etc/group
...
tty:alex,nut
...
于 2015-03-13T07:25:15.543 回答