The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Помогите со скриптом!!!!"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Помогите со скриптом!!!!"  
Сообщение от Sergeba (ok) on 10-Дек-08, 00:49 
Не могу решить проблему! Написал скрипт для Shell:

#!/bin/sh
stty columns 142
sleep 1
ps -aux | grep ctorrent > /mnt/C/sys/www/debug/d.txt
sleep 1
chmod 777 -R /mnt/C/sys/www/debug/*

Если его выполнять в консоле, то в файл построчно запишутся процессы, причём строки будут обрезаны до 142 символов. Если же я его запускаю из PHP скрипта командой system(), то строки обрезаются до 80 символов!!! Как это исправить??? - мне нужны строки минимум 130 символов!!!

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Помогите со скриптом!!!!"  
Сообщение от phpcoder email(??) on 10-Дек-08, 08:29 
В man ps есть:

ENVIRONMENT VARIABLES
       The following environment variables could affect ps:

       COLUMNS
          Override default display width.

       LINES
          Override default display height.

Возможно, это то что вам нужно.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Помогите со скриптом!!!!"  
Сообщение от SergeBa on 10-Дек-08, 11:03 
>[оверквотинг удален]
>
>       COLUMNS
>          Override default
>display width.
>
>       LINES
>          Override default
>display height.
>
>Возможно, это то что вам нужно.

У меня NAS и man ps не вижу. Подскажите, как этим пользоваться?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Помогите со скриптом!!!!"  
Сообщение от Square (ok) on 10-Дек-08, 08:42 
> мне нужны строки минимум 130 символов!!!

а оставить их какие  есть - не пробовали?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Помогите со скриптом!!!!"  
Сообщение от SergeBa on 10-Дек-08, 11:08 
>
>а оставить их какие  есть - не пробовали?

Что значит оставить как есть?  Мне нужно чтобы этот скрипт запускался из скрипта PHP и записывал результат минимум по 130 символов в строке, а он режет до 80 символов т.е. я теряю информацию, которая мне необходима для дальнейшего выполнения скрипта PHP.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Помогите со скриптом!!!!"  
Сообщение от Square (ok) on 10-Дек-08, 11:22 
>>
>>а оставить их какие  есть - не пробовали?
>
>Что значит оставить как есть?  Мне нужно чтобы этот скрипт запускался
>из скрипта PHP и записывал результат минимум по 130 символов в
>строке, а он режет до 80 символов т.е. я теряю информацию,
>которая мне необходима для дальнейшего выполнения скрипта PHP.

у ps есть опция w.

а что за NAS?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Помогите со скриптом!!!!"  
Сообщение от SergeBa on 10-Дек-08, 11:42 
>
>у ps есть опция w.
>
>а что за NAS?

AirLive 6500 (LevelOne WAP-0008) c альтернативной прошивкой.

А опция w не работает - уже пробовал...
Не пойму почему в консоле скрипт работает правельно, а из скрипта нет...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Помогите со скриптом!!!!"  
Сообщение от vic (??) on 10-Дек-08, 14:18 
>>
>>у ps есть опция w.
>>
>>а что за NAS?
>
>AirLive 6500 (LevelOne WAP-0008) c альтернативной прошивкой.
>
>А опция w не работает - уже пробовал...
>Не пойму почему в консоле скрипт работает правельно, а из скрипта нет...
>

1. Найдите доку на ps для этой шайтан-машины. Изучите.
2. Сравните какой у вас терминал при выполнении скрипта из консоли и из под php через system(), для этого в начале скрипта распечатать переменную TERM: echo $TERM. (как уже посоветовали). Если разное, то в скрипте принудительно установить тип терминала как у консоли.
3. в man ps для linux сказано что для случая перенаправления потока вывода (в вашем случае передача потока программе grep), ширина неопределена и может быть и 80, и хз какая, и зависеть от типа терминала. Поведение в вашей шайтан-машине может быть вообще своеобразным, для этого необходимо читать доку по ps.
4. не используйте тройные ! и ?, вообще как можно реже используйте эти знаки :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Помогите со скриптом!!!!"  
Сообщение от Sergeba (ok) on 10-Дек-08, 23:33 
Определил терминал xterm.
Добавил в начало скрипта:

export $TERM=xterm

Всё равно! Из консоли не режет, из скрипта PHP режет!

Народ! А может есть аналогичная команда (ps) для PHP?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Помогите со скриптом!!!!"  
Сообщение от devcoder (ok) on 10-Дек-08, 23:48 
>Определил терминал xterm.
>Добавил в начало скрипта:
>export $TERM=xterm

Вообще-то, для анализа твоей ситуации было бы
разумно СНАЧАЛА сравнить тип терминала в консоли твоего NAS-а
и тип терминала, который используется в php.
А ты сразу менять полез,
да ещё xterm сразу (мож про xterm linux-система в NAS ничего и не знает),
да ещё и с синтаксической ошибкой (зачем ты "$" поставил export TERM=xterm).

>Всё равно! Из консоли не режет, из скрипта PHP режет!
>Народ! А может есть аналогичная команда (ps) для PHP?

Слава я.цам, нет,
хотя нечто подобное можно слепить анализируя /proc/<pid>

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Помогите со скриптом!!!!"  
Сообщение от Sergeba (ok) on 11-Дек-08, 00:23 

>и тип терминала, который используется в php.

Я проверил - в консоле echo $THERM даёт результат xterm, вписал эту команду в Shell-скрипт и выполняя скрипт из PHP в окне броузера появляется надпись xterm, т.е. значения одинаковы!


>да ещё и с синтаксической ошибкой (зачем ты "$" поставил export TERM=xterm).

да, извиняюсь,ошибку нашёл, но суть в том что всё равно всё под xterm...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Помогите со скриптом!!!!"  
Сообщение от devcoder (ok) on 11-Дек-08, 12:32 
Запусти в терминала (а не консоли, судя по TERM=xterm) ps, но через php
% php -r "system('ps auxw');"
и посмотри обрежет он вывод или нет?

Если нет, то же самое проделай с твоим скриптом:
% php -r "system('твой_shell_скрипт');"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Помогите со скриптом!!!!"  
Сообщение от Sergeba (ok) on 11-Дек-08, 22:59 
>Запусти в терминала (а не консоли, судя по TERM=xterm) ps, но через
>php

Вообщем смысл такой: когда я запускаю либо комманду ps из php либо скрипт из терминала посредством php получается что результат зависит от размеров окна терминала т.е. вывод обрезается ровно по текущей ширине терминала и если я разворачиваю окно на "во весь монитор"
то и получается что в файл записывается больше информации соответственно, когда терминал не развёрнут размер файла получается 688 байт, когда во-весь экран - 1087 байт.
Нужно найти способ чтобы в момент выполнения скрипта виртуально развернуть терминал во весь экран...
Есть комманда stty в ней есть аргумент разрешающий-запрещающий обрезку вывода свыше 80 символов - может это оно? Самое хреновое что у меня этот аргумент не прокатывает - она его воспринимает как ошибку...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Помогите со скриптом!!!!"  
Сообщение от devcoder (ok) on 11-Дек-08, 23:05 
>>Запусти в терминала (а не консоли, судя по TERM=xterm) ps, но через
>>php
>
>Вообщем смысл такой: когда я запускаю либо комманду ps из php либо
>скрипт из терминала посредством php получается что результат зависит от размеров
>окна терминала т.е. вывод обрезается ровно по текущей ширине терминала

man ps
выбирай на вкус:


       -w              Wide output. Use this option twice for unlimited width.

       w               Wide output. Use this option twice for unlimited width.

       --cols n        set screen width

       --columns n     set screen width


       --headers       repeat header lines, one per page of output


       --width n       set screen width


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Помогите со скриптом!!!!"  
Сообщение от Sergeba (ok) on 12-Дек-08, 00:54 

>
>man ps
>выбирай на вкус:

Было бы так просто - не спрашивал бы! У меня ps с любыми ключами выдаёт одно и тоже - полную инфо и фсё!!! Регулировать окно не получается! По всей видимости эта команда на моём NAS "обрезанная"


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Помогите со скриптом!!!!"  
Сообщение от Sergeba (ok) on 12-Дек-08, 02:33 
>
>>
>>man ps
>>выбирай на вкус:
>
>Было бы так просто - не спрашивал бы! У меня ps с
>любыми ключами выдаёт одно и тоже - полную инфо и фсё!!!
>Регулировать окно не получается! По всей видимости эта команда на моём
>NAS "обрезанная"

Всё! Решил проблему! Спасибо за наводку про каталог /proc, всю необходимую информацию взял из него, немного переделал скрипт и всё заработало!!!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Помогите со скриптом!!!!"  
Сообщение от devcoder (ok) on 10-Дек-08, 11:30 
>[оверквотинг удален]
>stty columns 142
>sleep 1
>ps -aux | grep ctorrent > /mnt/C/sys/www/debug/d.txt
>sleep 1
>chmod 777 -R /mnt/C/sys/www/debug/*
>
>Если его выполнять в консоле, то в файл построчно запишутся процессы, причём
>строки будут обрезаны до 142 символов. Если же я его запускаю
>из PHP скрипта командой system(), то строки обрезаются до 80 символов!!!
>Как это исправить??? - мне нужны строки минимум 130 символов!!!

Думаю дело в не в PS, а внутри PHP, а именно в параметрах терминала,
который он использует для system().
Для начала, попробуйте в шелл-скрипт добавить
echo $TERM


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру