Невозможно записать файл в скрипте оболочки при запуске команды в фоновом режиме

Можно сделать с виртуальными хостами с помощью MaxClientsVHost.

<VirtualHost x.x.x.x:80> or use a NameVirtualHost

MaxClientsVHost 100

ServerName public-files-subdomain.mydomain.com
DocumentRoot /var/www/html/pub-share

Если у вас есть доступ к записям DNS для mydomain.com, можно добавить CNAME для этого public-files-subdomain.mydomain.com. Затем используйте NameVirtualHost в Apache для этого нового поддомена, чтобы разрешить MaxClientsVHost и другие полезные настройки. Отдельный IP-адрес, при таком подходе расходы не требуются.

1
24.09.2018, 03:40
1 ответ

У вас есть фоновый процесс, и вы хотите одновременно перенаправить вывод в файл журнала. Вы должны сделать это следующим образом: :сначала отправьте stdout туда, куда вы хотите, а затем отправьте stderr на адрес stdout:

 some_cmd > some_file 2>&1 &

ваш код должен быть изменен следующим образом:

#!/bin/bash

trainingState=1
epoch=50


#URL myspace test
URL="xxxxxx"

nohup python3.6 <arguments> >> help.out 2>&1 &

#processId of xyz
processId=$(pidof python3.6)

#this command executes
curl -X POST -H "Content-Type: application/json" -d '{"markdown" : "### The Training has started !! \n > EPOCS:'"$epoch"'"}' $URL

#while loop also executes but no data to read from file 
while [[ $trainingState == 1 ]]; do
      if ps -p $processId > /dev/null ; then
        echo "training happening"
        value=$(tail -n 1 help.out)
        curl requests etc.....
      else
        value=$(tail -n 1 help.out)
        echo "training finished"
        final curl requests etc.....
        trainingState=0
      fi
done

Еще:1 , 2

1
27.01.2020, 23:42

Теги

Похожие вопросы