我尝试使用以下行在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
看来墙上的输出无法定向到文件。
我怎样才能让它发挥作用? (能够发布到墙上并将消息记录到文件中)
答案 0 :(得分:3)
一种可能性是使用“tee -a”而不是“>>”。例如:
echo "Hello world"|tee -a myfile.log|wall
答案 1 :(得分:0)
似乎只是因为当前终端拥有其他用户/组而不是你运行sommand。以下在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
...