Python 3.x 在调度程序和bash脚本下读取pickle文件的权限被拒绝

Python 3.x 在调度程序和bash脚本下读取pickle文件的权限被拒绝,python-3.x,bash,cron,pickle,root,Python 3.x,Bash,Cron,Pickle,Root,我有一个可执行的bash脚本(.sh),应该一致地运行两个python脚本(只有当第一个脚本成功完成后,第二个脚本才会启动),run\u script.sh具有以下视图: #!/bin/bash #!/usr/bin/python3 scripts='/path/to/file/file1.py /path/to/file/file2.py' for s in $scripts do echo $s /usr/bin/python3 $s done 作为调度程序,我使用cron

我有一个可执行的bash脚本(
.sh
),应该一致地运行两个python脚本(只有当第一个脚本成功完成后,第二个脚本才会启动),
run\u script.sh
具有以下视图:

#!/bin/bash
#!/usr/bin/python3
scripts='/path/to/file/file1.py /path/to/file/file2.py'
for s in $scripts
do
    echo $s
    /usr/bin/python3 $s
done
作为调度程序,我使用
crontab作业

26 14 10-23 * * cd /path/to/file/ && /path/to/file/run_script.sh >> /home/log/crontab_LOG.log 2>&1
在python脚本中的数据聚合过程中,我使用
.pickle
文件。 但是,通过
.sh
文件执行建议的python脚本(
file1.py
file2.py
)后,我收到了错误:

PermissionError [Errno 13 ] Permission denied: '/path/to/file/example.pickle'
顺便说一句:
example.pickle
文件是在执行
file1.py
的过程中创建的,而不是在它使用的地方失控

当尝试在没有任何调度程序的情况下通过终端执行
sh run_script.sh
时,权限没有任何错误。所以,结果就是成功

我也试图寻找我的问题,但没有成功。()


问题是如何通过bash脚本将root权限设置为所需的python脚本?

它是通过使用
路径
的方法修复的:

from pathlib import Path
example_pickle = Path('logs/example_pickle'+datetime.now()+'.pickle')

感谢大家的灵感:)

问题不在于bash脚本的执行权限。问题在于,您的python脚本是以没有
path/to/file/example.pickle
写入权限的用户身份运行的。这可能是因为
path/to/file/example.pickle
缺少开头的
/
字符?您的
run\u script.sh
file1.py
是否与
.pickle
文件位于同一目录中。基本上检查所有这些脚本是否有正确的目录流。另外,如果不是从
root
@AvinashYadav运行,请检查
cron
用户是否拥有这些脚本的权限,现在
run\u script.sh
file1.py
位于同一目录中,但是由
file1.py
script example.pickle文件保存的路径位于
file1.py
所在文件夹的子目录中。我将尝试将其移动到一个目录。是,cron用户有权运行脚本。谢谢你的主意。@AndrewVickers,开头有“/”,这只是我的打字错误。Thanks@Cindy你试过在同一个目录中移动吗