看起来umask
和nohup
不能正确地一起工作。
我这样做了:
$ umask 022
$ nohup java -jar blah.jar &
[1] 12345
nohup: ignoring input and appending output to `nohup.out'
$ ls -l nohup.out
-rw-------. 1 juser juser 41242 Jun 27 11:07 nohup.out
知道为什么吗?nohup
是强制 600 忽略umask
设置吗?我怎样才能获得nohup.out
644 权限而不是 600 的创建权限?好的,我可以做一个chmod 644 nohup.out
,但我更喜欢“干净”的方法。
我的 shell 是 bash,操作系统是 CentOS 7。
答案1
GNU 的实现nohup
忽略umask
:
nohup.out
无论当前设置如何,由或$HOME/nohup.out
创建的任何文件都nohup
只能由用户读取和写入umask
。
这只适用于nohup
它本身创建文件时,因此您可以nohup.out
在运行之前使用适当的权限创建文件nohup
,nohup
并将附加到该文件而不更改权限:
umask 022
touch nohup.out
nohup java -jar blah.jar &
甚至使用重定向让 shell 为您创建文件:
umask 022
> nohup.out nohup java -jar blah.jar &