Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Запуск скрипта sh в терминале  (Прочитано 25469 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Syrex

  • Автор темы
  • Участник
  • *
  • Сообщений: 113
    • Просмотр профиля
Запуск скрипта sh в терминале
« : 14 Февраль 2009, 06:32:41 »
Народ,у меня есть скрипт (это рестартер для игрового сервера)

#!/bin/sh
while true ; do
servlog='/home/ххх/server/bin/Server.log';
outpatch='/home/ххх/server/bin/crash/';
date=`date "+%Y-%m-%d_%H:%M:%S"`;
echo "Server CRASHED !!! Start Bugreport System." >> $outpatch$date.txt;
echo "Server.log Log FILE Last 30 Lines:" >> $outpatch$date.txt;
cat $servlog | tail -n 30 >> $outpatch$date.txt;
echo "" >> $outpatch$date.txt;
echo "END bugtracker system." >> $outpatch$date.txt;
/home/ххх/server/bin/world
done

Подскажите,как сделать,что б этот скрипт запускался в терминале при старте системы ??

Заранее спс.

Оффлайн thunderamur

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6747
  • Ubuntu 16.04
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #1 : 14 Февраль 2009, 08:10:42 »
например запихать его(или кнопку для его запуска) в ~/.config/autostart

Оффлайн Syrex

  • Автор темы
  • Участник
  • *
  • Сообщений: 113
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #2 : 14 Февраль 2009, 08:16:49 »
например запихать его(или кнопку для его запуска) в ~/.config/autostart

Можна обьяснить более внятней,я не так давно на линуксе.

Оффлайн thunderamur

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6747
  • Ubuntu 16.04
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #3 : 14 Февраль 2009, 13:26:22 »
в домашней директории Ctrl+H, заходим в .config/autostart (если нет папки автостарт - создаём) и запихиваем туда твой скрипт.

Оффлайн Syrex

  • Автор темы
  • Участник
  • *
  • Сообщений: 113
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #4 : 14 Февраль 2009, 13:55:48 »
в домашней директории Ctrl+H, заходим в .config/autostart (если нет папки автостарт - создаём) и запихиваем туда твой скрипт.

Использую 8.04.У меня я не нахожу .config в домашней папке,может это скрытый файл ?Если да,то как его найти ?

Оффлайн thunderamur

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6747
  • Ubuntu 16.04
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #5 : 14 Февраль 2009, 14:35:48 »
Прочти мой предыдущий пост внимательнее (особенно начало)

Оффлайн mkarasik

  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #6 : 14 Февраль 2009, 18:47:00 »
Если ищешь в Наутилусе то ctrl-H, а из терминала итак должен быть виден. Если нет, то создавай как писали выше.

Оффлайн vrybas

  • Активист
  • *
  • Сообщений: 505
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #7 : 14 Февраль 2009, 19:28:48 »
 ~./config это вообще какие-то Гномьи дебри.  Я бы с ними для запуска рестарта сервака не связывался.

Есть файл /etc/rc.local

(Нажмите, чтобы показать/скрыть)

Следует поместить твой скрипт допустим в папку /home/username/scripts/  и сделать симлинк в /usr/bin

~$ sudo ln -s /home/username/scripts/scriptname /usr/bin/
(кстати, совсем не обязательно создавать файл скрипта с расширением sh, если в первой сточке скрипта указано #!/bin/sh, а оно у тебя указано)

И после этого можешь записать в rc.local(до последней строчки `exit 0`) команду  - имя скрипта.

Честно говоря какой-то странный скрипт. Думается мне он в своем while true будет жрать все процессорные такты. Надо хотя бы `sleep 5` поставить в конце перед `done`. Пусть хоть каждые 5 секунд зацикливается.

А вообще для таких вещей пишутся демоны. Демон в бесконечном цикле ждет сигнала. Демону через определенный промежуток веремени выдается сигнал: "Проснуться". Демон запускает обработчик сигнала "Проснуться" и в теле обработчика выполняется твой скрипт. Как-то так. Я, честно говоря, тоже не спец  ))
« Последнее редактирование: 15 Февраль 2009, 05:34:52 от vrybas »

Оффлайн Syrex

  • Автор темы
  • Участник
  • *
  • Сообщений: 113
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #8 : 14 Февраль 2009, 23:54:01 »
Прошу прощения,но хотелось бы уточнить: seep или sleep ? И кавычки нада или нет ?

Оффлайн tolstyj

  • Участник
  • *
  • Сообщений: 186
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #9 : 15 Февраль 2009, 02:11:43 »
Прошу прощения,но хотелось бы уточнить: seep или sleep ? И кавычки нада или нет ?

 sleep

Кавычки не надо, это впросто в тексте выделено, чтобы понятно было.

Гарри Кашпировский

  • Гость
Re: Запуск скрипта sh в терминале
« Ответ #10 : 15 Февраль 2009, 03:05:58 »
Мне кажется правильнее будет немного передалать скрипт и положить его в cron
#!/bin/sh
logfile='/home/ххх/server/bin/Server.log'
srvrun='/home/ххх/server/bin/world параметры_запуска'
srvname=world
outfile='/home/ххх/server/bin/crash.log'


if [ `ps ax | grep "$srvrun" | grep -v "grep" | wc -l` = 0 ]; then
   kill `ps xu | grep "$srvname" | grep "$srvrun" | grep -v "grep" | awk '{print $2}'`
   echo "Server CRASHED !!! Start Bugreport System" `date` >> $outfile
   echo "Server.log Log FILE Last 30 Lines:" >> $outfile
   cat $logfile | tail -n 30 >> $outfile
   echo "END bugtracker system." >> $outfile
   sleep 10 && $srv
fi
exit 0

Плюсы: не нужно вручную запускать сервер при его падении.
ЗЫ Про crontab на форуме темы были =)
« Последнее редактирование: 15 Февраль 2009, 03:56:15 от Гарри Кашпировский »

Оффлайн thunderamur

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6747
  • Ubuntu 16.04
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #11 : 15 Февраль 2009, 05:05:07 »
~./config это вообще какие-то Гномьи дебри. 

Я предложил самый простой вариант.

Оффлайн Syrex

  • Автор темы
  • Участник
  • *
  • Сообщений: 113
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #12 : 15 Февраль 2009, 09:55:42 »
Мне кажется правильнее будет немного передалать скрипт и положить его в cron
#!/bin/sh
logfile='/home/ххх/server/bin/Server.log'
srvrun='/home/ххх/server/bin/world параметры_запуска'
srvname=world
outfile='/home/ххх/server/bin/crash.log'


if [ `ps ax | grep "$srvrun" | grep -v "grep" | wc -l` = 0 ]; then
   kill `ps xu | grep "$srvname" | grep "$srvrun" | grep -v "grep" | awk '{print $2}'`
   echo "Server CRASHED !!! Start Bugreport System" `date` >> $outfile
   echo "Server.log Log FILE Last 30 Lines:" >> $outfile
   cat $logfile | tail -n 30 >> $outfile
   echo "END bugtracker system." >> $outfile
   sleep 10 && $srv
fi
exit 0

Плюсы: не нужно вручную запускать сервер при его падении.
ЗЫ Про crontab на форуме темы были =)

Обьясните,пж,что имеется ввиду под "параметры_запуска" ? И что такое cron и как его туда положить ?

Гарри Кашпировский

  • Гость
Re: Запуск скрипта sh в терминале
« Ответ #13 : 15 Февраль 2009, 15:27:00 »
Syrex, параметры запуска лучше смотреть в документации к своему серверу. Они могут быть не обязательны.
Про cron (планировщик задач) можно узнать тут http://ru.wikipedia.org/wiki/Cron
В итоге получится следующее: через определённое время планировшик дергает скрипт (см выше), который опрашивает состояние сервера, если сервер мертв записывает последние логи в файл crash.log и перезапускает сервер с десятисекундной задержкой. Время опроса можно поставить например в 3 минуты, тогда надобность в автозагрузке просто отпадает. Вроде все.
ЗЫ в третьей строчке снизу всё же накосячил $srv заменить на $srvrun
« Последнее редактирование: 15 Февраль 2009, 15:38:21 от Гарри Кашпировский »

Оффлайн Syrex

  • Автор темы
  • Участник
  • *
  • Сообщений: 113
    • Просмотр профиля
Re: Запуск скрипта sh в терминале
« Ответ #14 : 15 Февраль 2009, 21:17:14 »
Ну это все нормально,только есть одно НО.
Мне нада сделать так,что сам скрипт стартовал в консоли(терминале).
Эдентично так,как бы нажать 2 раза мышкой по скрипту и "Запустить в терминале".
Только такое нада при загрузке системы сделать.

 

Страница сгенерирована за 0.064 секунд. Запросов: 22.