Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Crontab来运行运行多个python脚本的bash脚本_Python_Linux_Bash_Cron - Fatal编程技术网

Crontab来运行运行多个python脚本的bash脚本

Crontab来运行运行多个python脚本的bash脚本,python,linux,bash,cron,Python,Linux,Bash,Cron,我是linux的初学者。我希望每30秒运行多个python脚本,我计划使用bash脚本(同时运行多个python脚本)和crontab(计划每30秒运行一次脚本) 下面是我的bash脚本的工作方式: #!/bin/bash # This script is used to run multiple python script to query all types and all modes of GTFSR data #Set working directory cd "${0%/*}" #

我是linux的初学者。我希望每30秒运行多个python脚本,我计划使用bash脚本(同时运行多个python脚本)和crontab(计划每30秒运行一次脚本)

下面是我的bash脚本的工作方式:

#!/bin/bash
# This script is used to run multiple python script to query all types and all modes of GTFSR data

#Set working directory
cd "${0%/*}"

#BUS Query Real Time
python gtfsrdb_tfnsw.py -p 'https://api.transport.nsw.gov.au/v1/gtfs/vehiclepos/buses' --database="postgresql://localhost/test" —apikey="XXX" -m "buses" -c -1 &
python gtfsrdb_tfnsw.py -t 'https://api.transport.nsw.gov.au/v1/gtfs/realtime/buses' --database="postgresql://localhost/test" --apikey="XXX" -m "buses" -c -1 &
python gtfsrdb_tfnsw.py -a 'https://api.transport.nsw.gov.au/v1/gtfs/alerts/buses' --database="postgresql://localhost/test" --apikey="XXX" -m "buses" -c -1 &

#Sydney Train Real Time
python gtfsrdb_tfnsw.py -p 'https://api.transport.nsw.gov.au/v1/gtfs/vehiclepos/sydneytrains' --database="postgresql://localhost/test" --apikey="XXX" -m "sydneytrains" -c -1 &
python gtfsrdb_tfnsw.py -t 'https://api.transport.nsw.gov.au/v1/gtfs/realtime/sydneytrains' --database="postgresql://localhost/test" --apikey="XXX" -m "sydneytrains" -c -1 &
python gtfsrdb_tfnsw.py -a 'https://api.transport.nsw.gov.au/v1/gtfs/alerts/sydneytrains' --database="postgresql://localhost/test" --apikey="XXX" -m "sydneytrains" -c -1 &

#Ferries Real Time
python gtfsrdb_tfnsw.py -p 'https://api.transport.nsw.gov.au/v1/gtfs/vehiclepos/ferries' --database="postgresql://localhost/test" --apikey="XXX" -m "ferries" -c -1 &
python gtfsrdb_tfnsw.py -t 'https://api.transport.nsw.gov.au/v1/gtfs/realtime/ferries' --database="postgresql://localhost/test" --apikey="XXX" -m "ferries" -c -1 &
python gtfsrdb_tfnsw.py -a 'https://api.transport.nsw.gov.au/v1/gtfs/alerts/ferries' --database="postgresql://localhost/test" --apikey="XXX" -m "ferries" -c -1 &

#lightrail Real Time
python gtfsrdb_tfnsw.py -p 'https://api.transport.nsw.gov.au/v1/gtfs/vehiclepos/lightrail' --database="postgresql://localhost/test" --apikey="XXX" -m "lightrail" -c -1 &
python gtfsrdb_tfnsw.py -t 'https://api.transport.nsw.gov.au/v1/gtfs/realtime/lightrail' --database="postgresql://localhost/test" --apikey="XXX" -m "lightrail" -c -1 &
python gtfsrdb_tfnsw.py -a 'https://api.transport.nsw.gov.au/v1/gtfs/alerts/lightrail' --database="postgresql://localhost/test" --apikey="XXX" -m "lightrail" -c -1 &

#nswtrains Real Time
python gtfsrdb_tfnsw.py -p 'https://api.transport.nsw.gov.au/v1/gtfs/vehiclepos/nswtrains' --database="postgresql://localhost/test" --apikey="XXX" -m "nswtrains" -c -1 &
python gtfsrdb_tfnsw.py -t 'https://api.transport.nsw.gov.au/v1/gtfs/realtime/nswtrains' --database="postgresql://localhost/test" --apikey="XXX" -m "nswtrains" -c -1 &
python gtfsrdb_tfnsw.py -a 'https://api.transport.nsw.gov.au/v1/gtfs/alerts/nswtrains' --database="postgresql://localhost/test" --apikey="XXX" -m "nswtrains" -c -1 &
这是我在crontab中输入的内容:

# GTFSR to Database
* * * * * ( /bin/bash /home/amarinS/projects/TfNSW_GTFSRDB/GTFSR_call)
* * * * * ( sleep 30 ; /bin/bash /home/amarinS/projects/TfNSW_GTFSRDB/GTFSR_call)
如果手动运行
/bin/bash/home/amarinS/projects/TfNSW\u GTFSRDB/GTFSR\u call
,bash脚本工作正常。但是,当作业通过CRONTAB运行时,不会发生任何事情

请帮忙

干杯

  • 可能是从crontab运行的脚本缺少一些正确运行所需的环境变量。 看看是否有帮助
  • 将bash输出(stdout和stderr)重定向到日志文件可能会有好处,这样您就可以知道它失败的原因
  • (旁注):在cron定义中加入sleep30听起来是个坏主意。你为什么这么做
  • 可能是从crontab运行的脚本缺少一些正确运行所需的环境变量。 看看是否有帮助
  • 将bash输出(stdout和stderr)重定向到日志文件可能会有好处,这样您就可以知道它失败的原因
  • (旁注):在cron定义中加入sleep30听起来是个坏主意。你为什么这么做
    确保您正在以root用户身份创建cron条目。过去我曾有过这样的经历

    验证环境变量和python解释器


    确保所有脚本都是可执行的

    确保将cron条目创建为root。过去我曾有过这样的经历

    验证环境变量和python解释器


    确保所有脚本都是可执行的

    尝试在bash脚本中放置一个无限循环,并在末尾添加
    sleep30
    。将此添加到crontab
    @rebootbin/bash/path/to/script/GTFSR\u call
    。并重新启动机器以确保。当您重新启动系统时,您的scrpit将在后台运行。请尝试在bash脚本中放置一个无限循环,并在最后添加
    sleep 30
    。将此添加到crontab
    @rebootbin/bash/path/to/script/GTFSR\u call
    。并重新启动机器以确保。当您重新启动系统时,您的scrpit将在后台运行。我使用sleep 30,因为默认的crontab将每1分钟运行一次。因此,我将第二个作业设置为30秒后运行。这将导致相同的脚本每30秒运行一次。有更好的方法吗?我使用sleep 30,因为默认的crontab每1分钟运行一次。因此,我将第二个作业设置为30秒后运行。这将导致相同的脚本每30秒运行一次。有更好的方法吗?