在Linux中,如何将脚本中的墙输出重定向到文件?

时间:2013-10-07 01:29:00

标签: linux bash logging

我尝试使用以下行在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

看来墙上的输出无法定向到文件。

我怎样才能让它发挥作用? (能够发布到墙上并将消息记录到文件中)

2 个答案:

答案 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
...