首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在shell脚本中创建目录/文件时权限被拒绝

在shell脚本中创建目录/文件时权限被拒绝
EN

Stack Overflow用户
提问于 2015-03-04 08:13:07
回答 2查看 3.6K关注 0票数 0

我的shell脚本(increment.sh)中有一个命令:

代码语言:javascript
复制
TMP_FILE=/tmp/sbg_clickstream.tmp

hive -e "select * from $HIVE_TMP_TABLE;" > $TMP_FILE

我在第二行收到一个错误:

代码语言:javascript
复制
/tmp/sbg_clickstream.tmp: Permission denied
Error: Error occured while opening data file
Error: Load Failed, records not inserted.
Load failed (exit code 1)

我尝试了chmod 750 /tmp/sbg_clickstream.tmp并再次运行该脚本,但仍然收到相同的错误。

我是shell脚本的新手,我认为dir/file是在TMP_FILE=/tmp/sbg_clickstream.tmp的时候创建的。然而,在上面的测试之后,得出的结论是它不是。

我认为dir/file就是在这个过程中创建的:

代码语言:javascript
复制
hive -e "select * from $HIVE_TMP_TABLE;" > $TMP_FILE

当查询正在填充和创建文件时,如何更改权限?

EN

回答 2

Stack Overflow用户

发布于 2015-03-04 12:35:26

两个问题:

文件/tmp/sbg_clickstream.tmp的所有者

  • 哪个用户正在运行脚本?

如果运行脚本的用户拥有该文件,那么问题可能出在shell设置本身。

在命令行中键入set -o,然后检查clobbernoclobber的值。如果将noclobber设置为on或将clobber设置为off,则无法通过重定向覆盖文件。您需要设置或取消设置clobber/noclobber

如果您的shell具有clobber的值(如Kornshell),则需要执行以下操作:

代码语言:javascript
复制
$ set -o clobber   # Turns clobber on

如果您的shell具有noclobber的值(如BASH),则需要执行以下操作:

代码语言:javascript
复制
$ set +o noclobber # Turns noclobber off

是的,-o/+o参数似乎是倒退的。

提示:

不要一遍又一遍地使用相同的文件名,可以尝试这样做:

代码语言:javascript
复制
TMP_FILE=/tmp/sbg_clickstream.$$.tmp
hive -e "select * from $HIVE_TMP_TABLE;" > $TMP_FILE

$$代表pid,因此一直在变化。当系统重新启动时,它应该清除/tmp目录。否则,PID会攀升,不应重复。这样,每次运行都会生成一个新的临时文件,您不必担心是否会出错。

更好的提示

查看您的系统是否有mktemp命令。这将生成一个唯一的临时文件名:

代码语言:javascript
复制
TMP_FILE=$(mktemp -t sbg_clickstream.XXXXX)
echo "The tempfile is '$TMP_FILE'
hive -e "select * from $HIVE_TMP_TABLE;" > $TMP_FILE

这可能与下面的内容相呼应:

代码语言:javascript
复制
The tempfile is /tmp/sbg_clickstream.Ds23d

mktemp保证可以创建有效且唯一的临时文件名。

票数 1
EN

Stack Overflow用户

发布于 2015-03-04 08:44:21

chmod/chown是您的朋友,但是您需要确保运行shell脚本的用户/组具有写入/tmp目录的权限。

以下命令的输出是什么:

代码语言:javascript
复制
ls -ld /tmp
whoami
groups
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28844483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档