#!/bin/bash
value=$(<man.txt)
echo "$value"

if [ "$value" == "true" ]; then
    echo "startedif_manthan"
      ps -ef|grep sym |awk '{ print $2 }'|sudo  xargs kill -9;
      sleep 30;
    sudo sh /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server;
fi

Привет, у меня есть этот скрипт, убивающий процесс и перезапустить скрипт через некоторое время. Это нормально убивает скрипт, но скрипт перезапуска (sudo sh /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server) работает неправильно. когда я запускаю скрипт вручную, это также создает проблемы. Я не знаю, является ли это сценарий оболочки или нет. Но когда я попытался вручную перейти к расположению скрипта и выполнить эту команду ./sym --port 8082 --server скрипт работает нормально.

Какие-либо предложения?

1 ответ1

0

Основываясь на том, что я вижу, команда сопоставления списка процессов собирается убить grep который выполняет сопоставление с образцом, и предотвратить дальнейшее выполнение. Быстрый взлом состоит в том, чтобы удалить сам grep из результатов поиска:

ps -ef|grep sym | grep -v grep| awk '{ print $2 }'|sudo  xargs kill -9;

Лучшим способом было бы прочитать pgrep/pkill и использовать их. :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .