Запуск Python Скрипт внутри Bash Не работает в Crontab - PullRequest
0 голосов
/ 07 августа 2020

Привет, ребята, я хотел бы попросить помощи с моим bash скриптом. Я запускаю сценарий 2 python внутри своего сценария bash, и он работает, когда я запускаю его вручную, но когда я использую cron, только команды в файле. sh работают не на .py

Обратите внимание, что я уже установил необходимые утилиты и пакеты для python3.

Это сценарий:

#!/usr/bin/env bash

# list.tmp path directory
fileLoc="/home/ec2-user/PushNotification/Incoming34days/list34days.tmp"
# URL to POST request
refLink='http link'
# Title of Push Notification
title='34th day: Grace Period is about to end'
# curl type
type='Notification'
# curl action_type
actionType='NotificationActivity'
# Get the current date and time
now=$(date '+%b %d %Y %H:%M:%S')
# Message to the user
body="Subscribe to the Philippine Mobile Number plan now to continue receiving calls and texts and sending text messages to the Philippines."
# Logs location
logsLoc="/home/ec2-user/PushNotification/Incoming34days/logs.tmp"
# current number
currentNumLoc="/home/ec2-user/PushNotification/Incoming34days/currentNum.tmp"

echo "[$now] Sending notifications to mobile numbers advising today is the last day of grace period..." > $logsLoc
# Python file to SELECT all id who has 34 days counter
python3 select34days.py
# psql -d $database -t -c "SELECT id FROM svn WHERE current_date - expiry_date::DATE = 4" psql must be setup using .pgpass for postgresql authentication, please indicated database
# name and query list directory. Deleting the last line from list.txt

# This is to read the textfile list.txt line per line
while IFS='' read -r list;
# for list in `cat list.txt`;
do
# curl POST request
        response=$(curl --location --request POST $refLink \
                --header 'Authorization: Basic YXBwdm5vdXNlcjphcHB2bm9wYXNz' \
                --header 'Content-Type: application/json' \
                --data-raw '{
                "title":"'"$title"'",
                "body":"'"$body"'",
                "min" :[{"mobileNumber" : "'"$list"'"}],
                "type" : "'"$type"'",
                "action_type" : "'"$actionType"'"}')
# Echo mobile number
        echo "[$now] Mobile Number: $list" >> $logsLoc
# Echo response from curl
        echo "Response: '$response'"
        echo "[$now] Result: '$response'" >> $logsLoc
# Update the current number of the list
        echo $list > $currentNumLoc
        echo "[$now] Updating $list status into EXPIRED" >> $logsLoc
# Updating status into EXPIRED
        python3 updateQuery34.py
done < "$fileLoc"

# end of script

select34days.py и updateQuery34.py не

У меня есть файл log.tmp, чтобы проверить эту ситуацию, и отображаются только команды внутри моего. sh файла

Внутри моего cron

SHELL = / bin / bash ПУТЬ = / sbin: / bin: / usr / bin: / usr / bin ПОЧТА = root

1 Ответ

0 голосов
/ 07 августа 2020

Ваш ПУТЬ выглядит неправильно:

PATH=/sbin:/bin:/usr/bin:/usr/bin

Это включает /usr/bin дважды, что не обязательно, но намекает, что там должно было быть что-то еще.

В зависимости от того, как вы ' Если вы его установили, python может быть в /usr/bin/ или /usr/local/bin или даже где-то в /opt.

В командной строке вы можете найти каталог python, используя:

dirname $(which python3)

Этот каталог необходимо добавить к вашему пути в вашем crontab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...