Как сделать чтобы скрипт(сервер) работал после закрытия SSH?
Я написал мессенджер на питоне, поставил сервер.py на VPS, всё работает, но как сделать чтобы сервер работал на постоянной основе? Тк когда я закрываю SSH, соединение закрывается и сервер падает.
- Вопрос задан более трёх лет назад
- 1032 просмотра
Комментировать
Решения вопроса 2

& &! nohup
и тп — не являются решением вашей проблемы
Ответ написан более трёх лет назад
Нравится 1 2 комментария
Kibernet @kibernetshow Автор вопроса
А где именно указать путь к самому файлу сервер.py?
[root@y500-fedora ~]# cat /etc/systemd/system/foo.service [Unit] Description=foo [Service] ExecStart=/bin/bash -c "while true; do /bin/inotifywait -qq --event close_write /sys/class/backlight/acpi_video0/brightness; su myusername -c '/bin/xbacklight -display :0 -set $(cat /sys/class/backlight/acpi_video0/brightness)'; done" [Install] WantedBy=multi-user.target
Как сделать чтобы php-скрипт работал постоянно?
На платном хостинге создал простенький скрипт с бесконечным циклом, в теле которого увеличивается раз в минуту значение переменной на единицу и пишется в файл:
set_time_limit(0);
ignore_user_abort(1);
$a=true;
$file_name=»real.txt»;
$nums=0;
while($a) $fp=fopen($file_name,»w»);
$nums++;
fwrite($fp,»Выполнено: $nums раз»);
fclose($fp);
sleep(60);
>
?>
Скрипт дошел до 7 и остановился. почему?
Лучший ответ
потому что есть понятия максимального времени что отводится скрипту на выполнение и максимальное колличество памяти что может быть выделено ему. Также еще существует критерий — наргузка на сервер. Вы так чаще экспериментируйте и вас хостинг провайдер попросит где нибудь в другом месте так экспериментировать. В вашем же случае надо смотреть в сторону https://www.netangels.ru/support/hosting-howto/use-cron/
МоралфагПрофи (671) 8 лет назад
большое спасибо! выберу ваш ответ лучшим. То есть получается что, допустим программу для рассылки писем (которая рассылает в цикле около 2000 адресов с интервалов в 3 секунды ) сделать на php не получится? А каким вообще образом тогда пишутся очень долгие программы на php (бруты, рассыльщики email и т. д.)?
nephalim Мыслитель (6642) Собственные выделенные сервера и ботнеты. И давайте без сарказма, я этого не люблю.
Остальные ответы
sleep() убери лучше. иногда не работает на хостингах.
лучше сделай на JS запросы к php файлу, каждую секунду например через POST или JQUERY. так хостер ничего не будет возбухать.
Такие вещи лучше делать на Node.JS на выделенном сервере. PHP не получится использовать для бесконечного выполнения на обычном хостинге. так что в любом случае необходим виртуальный сервер.
Запускаем Python-скрипт на сервере, чтобы он работал всё время
В итоге мы остановились на том, что научились запускать скрипт на сервере, чтобы он работал после разрыва соединения. Но это половинчатое решение: если мы перезапустим сервер, то бот остановится. Иногда сервер перезагружается сам на стороне провайдера, например при плановых технических работах. И тогда наши скрипты умирают.
Сейчас нам нужно такое решение, чтобы бот автоматически перезапускался при любых обстоятельствах. Этим и займёмся.
Коротко — суть
Чтобы было понятно, что тут происходит, вот короткая версия:
- Настраиваем удалённый доступ к серверу.
- Создаём папку и заливаем в неё скрипт, который в итоге должен будет работать всё время.
- Создаём у себя на компьютере файл службы — он управляет настройками автозапуска скрипта.
- Отправляем файл службы на сервер.
- Обновляем на сервере данные обо всех службах и запускаем нашу.
Теперь подробно про каждый шаг.
Предварительная работа
Основное, что мы будем использовать, — это удалённый доступ к серверу по SSH. Для этого он должен быть включён на самом сервере, и там же можно сразу посмотреть параметры доступа. Например, для работы нашего учебного сервера мы пользуемся услугами SpaceWeb, где доступ по SSH включается из панели управления:

Запускаем SSH и проверяем, что соединение устанавливается. Чтобы соединиться, нужно написать в терминале команду ssh имя_пользователя@адрес_сервера, после чего нажать Enter. Сервер спросит пароль, и, если мы его правильно ввели, нас пустят.

Мы видим приветствие сервера, значит, всё прошло хорошо и мы можем управлять им со своего компьютера. Для этого нужно будет писать в терминал команды и реагировать на то, что тебе ответит сервер.
Отправляем скрипт на сервер
Чтобы не захламлять корневую папку на сервере, создадим новую папку bot. Вот эта команда:
После этого открываем новую командную строку на компьютере, а не на сервере. Для этого нужно запустить ещё одно окно терминала. Там пишем такое:
scp /Users/mihailpolanin/Downloads/bot.py mpolyanin@77.222.61.9:bot
Вот что это означает:
- scp — копирование файла по SSH;
- /Users/mihailpolanin/Downloads/bot.py — это путь к нашему скрипту на компьютере. Его замените на то, что будет у вас;
- mpolyanin@77.222.61.9 — адрес сервера и логин пользователя. Это тоже замените на ваши данные;
- : — отделяет сервер от папки;
- bot — название папки, которую мы только что создали на сервере.
Лайфхак: чтобы не писать вручную пути до файлов на локальном компьютере, можно перед началом ввода пути просто перетащить файл в окно терминала. Терминал поймёт, что вы имели в виду «путь до этого файла», и подставит данные сам.
После запуска у нас попросят пароль от сервера — вводим его и видим статистику отправки файла:

Переключаемся обратно в SSH-соединение и проверяем, что файл скопировался и лежит в папке. Для этого вводим две команды: первая перейдёт в эту папку, а вторая покажет её содержимое:

Готовим файл для работы службы
Нам нужно, чтобы система сама следила за тем, чтобы скрипт работал всё время и запускался после перезагрузки. В Linux за это отвечают службы — одну из таких служб мы сейчас и сделаем.
Создаём на компьютере новый файл bot.service и вставляем туда такое:
[Unit] Description=tg-bot After=multi-user.target [Service] User=root Group=root Type=simple Restart=always ExecStart=/usr/bin/python3 /bot/bot.py [Install] WantedBy=multi-user.target
Два самых важных параметра — это путь к нашему скрипту (/bot/bot.py) и название службы: tg-bot. Название может быть любым, а вот путь к скрипту нужно указать точно.
Теперь закидываем этот файл на сервер в папку /usr/lib/systemd/system. Для этого в командной строке компьютера пишем:
scp /Users/mihailpolanin/Downloads/bot.service mpolyanin@77.222.61.9:/usr/lib/systemd/system
Как и раньше, не забудьте заменить адрес до файла .service на вашем компьютере, а также имя пользователя и адрес сервера. Первый адрес можно не писать вручную, а перетащить файл в терминал сразу после набора команды scp.
Запуск службы
Теперь нам нужно перезагрузить все службы, чтобы наш файл тоже попал в общий список для запуска. Открываем SSH-консоль и выполняем там такую команду:
sudo systemctl daemon-reload
И сразу включим наш сервис, чтобы он не отключался при перезагрузке сервера:
sudo systemctl enable bot.service
Всё, можно запускать наш телеграм-бот как службу. Вот основные команды для этого:
- sudo systemctl start bot.service — запустить службу;
- sudo systemctl stop bot.service — остановить службу;
- sudo systemctl status bot.service — посмотреть статус, работает или нет.
Что дальше
В следующий раз сделаем ещё круче — настроим систему мониторинга на сервере, чтобы нам на почту приходило сообщение, когда служба перезапускается или останавливается с ошибкой. Подпишитесь, чтобы не пропустить.
Любишь Python? Зарабатывай на нём!
Изучите самый модный язык программирования и станьте крутым бэкенд-разработчиком. Старт — бесплатно.

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Как сделать чтобы скрипт работал постоянно
Помогите пожалуйста.
Нужен скрипт который каждые 10 секунд должен будет нажимать клавишу Left Ctrl, ещё нужно сделать чтобы его можно было приостанавливать нажанием на клавишу home.
Заранее спасибо
HotKeyIt Posts: 2364 Joined: 29 Sep 2013, 18:35 Contact:
Re: Автоматизация нажатия
Loop < Send Sleep 60000 > Home::Pause
novoross92 Posts: 1 Joined: 16 Jan 2021, 10:28
Re: Автоматизация нажатия
Народ, помогите сделать скрипт, буду очень благодарен.
Нажатие следующих клавиш последовательно после друг друга с задержкой в секунду:
F3, F2, Ctrl V (вставить текст из буфера), Enter.
и что бы зациклить эту команду раз 100.
_____________________________________________________
People, help me make a script, I will be very grateful.
Pressing the following sequences after each with a delay of a second:
F3, F2, Ctrl V (paste text from clipboard), Enter.
and to loop this command 100 repeat.
HotKeyIt Posts: 2364 Joined: 29 Sep 2013, 18:35 Contact:
Re: Автоматизация нажатия
Loop 100 < Send Sleep 1000 Send Sleep 1000 Send ^v >
Guest
Re: Автоматизация нажатия
Loop <
Send
Sleep 60000
>tab::Pause
Zhizh
Re: Автоматизация нажатия
Добрый день!
Нужен скрипт, который будет зажимать клавишу E в течении 13 секунд и паузой после нажатия в 2 секунды. Спасибо
LIRON
Re: Автоматизация нажатия
Мне нужен скрипт, чтобы при нажатии NumPad5 очень быстро кликался Левый шифт (Примерно раз в 10 миллисекунд), надеюсь мне поможете, спасибо!
ValeraJMA Posts: 1 Joined: 08 Jun 2021, 08:21
Re: Автоматизация нажатия
Вот в данный момент мне нужна такая штучка чтобы она нажимала абсолютно любую клавишу, активировалась и наоборот на абсолютно любую клавишу, повторялась раз в 4 минуты и повторялась абсолютно любое количество раз. Можете меня обеспечить подобным?
mr_drag0nFly
Re: Автоматизация нажатия
Привет, мне нужен срипт чтобы при нажатии какой нибудь клавиши, срабатывало 3 кнопки. R и через примерно 0,250 секунды 2 раза пробел.
fqmadi Posts: 1 Joined: 08 Nov 2021, 04:52
Re: Автоматизация нажатия
26 Jan 2018, 04:56
Loop < Send Sleep 60000 > Home::Pause
Как сделать что бы клавиши зажимались, а не просто нажимались.
HotKeyIt Posts: 2364 Joined: 29 Sep 2013, 18:35 Contact:
Re: Автоматизация нажатия
Amvskiy
Re: Автоматизация нажатия
Нужен скрипт, который будет нажимать определённые клавиши, с задержкой секунды три, но надо чтобы он понял когда будет задержка на этой клавише, а именно, когда появится оранжевый цвет, короче говоря скрипт нужен для игры, там надо нажимать на разные клавиши и стрелочки, и когда на клавиши определённую, ждёшь когда поднимится шкала, а потом дальше уже нажимаешь на другую, я хочу чтобы это было всё автоматически и чтобы скрипт останавливался на какую-то кнопку и запускался тоже