我有一个可执行的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
文件。但是,由于通过file1.py
文件执行建议的python脚本(file2.py
和.sh
),我收到了错误消息:
PermissionError [Errno 13 ] Permission denied: '/path/to/file/example.pickle'
btw:example.pickle
文件是在执行file1.py
的过程中创建的,没有超出其使用的位置。
当尝试在没有任何调度程序的情况下通过终端执行sh run_script.sh
时,权限没有任何错误。因此,结果就是成功。
我也尝试搜索我的问题,但这没有成功。 (Permission denied for Python script using Bash?),IO Error while storing data in pickle
问题是如何通过bash脚本将root权限设置为所需的python脚本?
Path
的使用方法进行了修复:from pathlib import Path
example_pickle = Path('logs/example_pickle'+datetime.now()+'.pickle')
感谢大家的启发思想:)