Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu 为什么我可以编辑但不能附加unix文件_Ubuntu_Logging_Permissions - Fatal编程技术网

Ubuntu 为什么我可以编辑但不能附加unix文件

Ubuntu 为什么我可以编辑但不能附加unix文件,ubuntu,logging,permissions,Ubuntu,Logging,Permissions,感觉很傻。使用同一用户我可以通过vi编辑文件,但在附加到文件时会出现权限错误我做错了什么。我想附加到此文件 ls -alt /var/log drwxr-xr-x 11 root root 4096 May 14 01:20 . -rw-rw-r-- 1 root root 6 May 14 01:20 money-worker.log sudo echo "hello" >> /var/log/money-worker.log -bas

感觉很傻。使用同一用户我可以通过vi编辑文件,但在附加到文件时会出现权限错误我做错了什么。我想附加到此文件

ls -alt /var/log
drwxr-xr-x 11 root      root     4096 May 14 01:20 .
-rw-rw-r--  1 root      root        6 May 14 01:20 money-worker.log

sudo echo "hello" >> /var/log/money-worker.log
-bash: /var/log/money-worker.log: Permission denied

whoami
ubuntu
我正在运行Ubuntu12.04,并且正在运行


我喜欢一些建议。谢谢大家

这是因为您的
sudo
调用会影响echo,但不会影响对文件的权限。换句话说,该命令执行并输出(并且
sudo
结束),然后尝试将该输出重定向到文件

您可以将
echo“hello”>/var/log/money worker.log
放入文件,然后执行
sudo yourscript.sh

或者只是更改文件的所有权,因为:

sudo echo "hello" >> /var/log/money-worker.log
指:

( sudo echo "hello" ) >> /var/log/money-worker.log
不是:

换句话说,shell在运行
sudo
之前正在尝试追加。shell将(尝试)打开要追加的文件,然后将其“附加”到
sudo
stanadard输出

作为解决方法,您可以尝试以下方法:

sudo bash -c 'echo "hello" >> /var/log/money-worker.log'

它将运行整个
bash
——在
sudo
的控制下使用参数和重定向,我想这就是为什么您拥有超过250k的数据!非常感谢您的快速响应和快速编辑,以包含解决方案!对于那些正在使用upstart(initconf文件)处理此问题的人。这一点也很重要:
sudo bash -c 'echo "hello" >> /var/log/money-worker.log'