在调度程序和 bash 脚本下读取泡菜文件的权限被拒绝
Permission denied for read pickle-file under scheduler and bash script
我有一个可执行的 bash 脚本 (.sh
),它应该是 运行 2 python 个脚本(只有当第一个成功完成时,第二个才会开始),run_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 job
:
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
时,权限没有任何错误。所以,结果就是成功。
我也尝试搜索我的问题,但没有成功。 (), IO Error while storing data in pickle
问题是如何通过 bash 脚本将 root 权限设置为所需的 python 脚本?
已通过 Path
的使用方法修复:
from pathlib import Path
example_pickle = Path('logs/example_pickle'+datetime.now()+'.pickle')
感谢大家的启发:)
我有一个可执行的 bash 脚本 (.sh
),它应该是 运行 2 python 个脚本(只有当第一个成功完成时,第二个才会开始),run_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 job
:
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 脚本?
已通过 Path
的使用方法修复:
from pathlib import Path
example_pickle = Path('logs/example_pickle'+datetime.now()+'.pickle')
感谢大家的启发:)