Добрый день! Появились некоторые вопросы относительно screen и bash-скриптов.
Началось всё с того, что мне надо было из php-скрипта запускать на исполнение один bash-скриптик, который создаёт screen-сессию, в которой качает очень долго большой файл вегетом.
Собственно, php-скрипт вот такой и с ним проблем нет:
Backupping... <br />
<?php
$execresult = shell_exec('../../backup/dl');
echo $execresult;
?>
Done!
Как видно из скрипта, я могу если что вывести в браузер то, что творится в консоли.
Ок, теперь то, что лежит в ../../backup/dl:
/bin/bash
screen -d -m -S backup
После того, как прогоняю в браузере php-скрипт, он рапортует Done! а я лезу в ssh и пишу screen -ls. Вот что я вижу в результате:
(10/09/2011 04:35:05 PM) (Detached)
1969.VNC (10/09/2011 01:53:45 PM) (Detached)
910.minecraft (10/09/2011 12:59:29 PM) (Detached)
Нижние два я создал сам руками ранее. А вот верхний создан скриптом. Как мы видим, он создался, но у него нет ни pid, ни названия! Как так?
Дописал в скрипт вот эту строчку: echo `screen -ls`
И снова запустил php-шник.
На этот раз я увидел:
2721.backup (10/09/2011 04:35:46 PM) (Detached)
2677.backup (10/09/2011 04:35:05 PM) (Detached)
1969.VNC (10/09/2011 01:53:45 PM) (Detached)
910.minecraft (10/09/2011 12:59:29 PM) (Detached)
Выходит скрипт всё же создаёт сессии с нужными именами и видит уже созданные! Но когда я снова зашёл в shh и написал screen -ls, то увидел
(10/09/2011 04:35:46 PM) (Detached)
(10/09/2011 04:35:05 PM) (Detached)
1969.VNC (10/09/2011 01:53:45 PM) (Detached)
910.minecraft (10/09/2011 12:59:29 PM) (Detached)
То есть почему-то из bash-скрипта видно как созданные им сессии, так и не им созданные. А из обычного терминала созданные скриптом показаны как непонятно что.
Ладно, думаю, раз скрипт сам видит свои сессии, может, он сможет и заставить их исполнять команды? Убираю все «кривые» сессии, добавляю в конец строчку:
screen -S backup -X exec wget -O /home/abtomat/servers/backup/backup-$(date +%Y-%m-%d).txt http://neochan.ru/backup/test.txt
И... ничего не происходит. Так как я из терминала не могу законнектиться к этим сессиям, я не могу понять, что происходит. В то же время, если в терминале написать:
screen -d -m -S test
screen -S test -X exec wget -O /home/abtomat/servers/backup/backup-$(date +%Y-%m-%d).txt http://neochan.ru/backup/test.txt
То заветный файлик скачивается и появляется где ему подобает.
Кодировка bash-скрипта utf-8 (cp1251 приводила ровно к такому же результату) да и русских букв там нет.
Народ, объясните, почему так происходит? Может, я чего-то не понимаю?
Ответ на:
комментарий
от true_admin
Ответ на:
комментарий
от true_admin
Ответ на:
комментарий
от baverman
Ответ на:
комментарий
от true_admin
Ответ на:
комментарий
от baverman
Ответ на:
комментарий
от ABTOMAT
Ответ на:
комментарий
от provaton
Ответ на:
комментарий
от ABTOMAT
Ответ на:
комментарий
от ABTOMAT
Ответ на:
комментарий
от Slavaz
Ответ на:
комментарий
от ABTOMAT
Ответ на:
комментарий
от ABTOMAT
Ответ на:
комментарий
от Slavaz
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум BASH-скрипты и screen (2014)
- Форум GNU/Screen (2009)
- Форум gnu screen (2009)
- Новости GNU screen 4.7.0 (2019)
- Новости GNU Screen 5.0 (2024)
- Форум GNU screen тормозит (2009)
- Форум screen + bash = no_bash_shortcuts (2011)
- Форум Bash и Screen. (2017)
- Форум Скрипт для screen (2012)
- Форум Screen и скрипт (2011)