The OpenNET Project / Index page

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

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

"Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 10:01 
Доброго времени...

Одной знакомой задали в универе скрипт написать. С первого взгляда легко, а када подумаеш трудновато.
Ладно вот в чем задача.
Есть фаил типа:

user1:proc1,proc2,proc3 .... procN
user2:proc1,proc2,proc3 .... procN
user3:proc1,proc2,proc3 .... procN
...
userN:proc1,proc2,proc3 .... procN

Надо написать скрипт который будет читать этот фаил, анализировать деыствуюущие процессы, и если кто нить из юзеров в списке запускает какой нить процесс который написан перед ним в строке, то надо писат в лог "Юзер userN запустил процесс procN".
Этот скрипт долйен сидеть в бэкграунде и работать допустим каждые 30 секунд.

Теперь о проблемах. А проблема в том что число процессов для каждого пользователя может быть разным.

Надеюсь я ясно описал проблему.
Заранее спасибо..

З.Ы. Огромная просьба не писать сообшений типа "man awk", где найти manы я знаю, и как читать тоже.

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

 Оглавление

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


1. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 14-Ноя-07, 10:19 
Вопрос-то какой? В чем? Вы хотите, чтобы за вас скрипт написАть что ли? гыгы)

[...]
>Теперь о проблемах. А проблема в том что число процессов для каждого
>пользователя может быть разным.

Ну и что? Есть ведь разделитель в виде запятой и в цикле перебирать и смотреть/сравнивать.

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

2. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 10:24 
>Вопрос-то какой? В чем? Вы хотите, чтобы за вас скрипт написАть что
>ли? гыгы)
>
>[...]
>>Теперь о проблемах. А проблема в том что число процессов для каждого
>>пользователя может быть разным.
>
>Ну и что? Есть ведь разделитель в виде запятой и в цикле
>перебирать и смотреть/сравнивать.

Угу вот-вот, хотелось бы чтоб за меня скрипт написали.
Я сам пишу щас, но хотелось бы посматреть как другие решили бы эту задачу.

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

3. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 12:47 
Бот что я наваял, но кайетсыа это не эффективно.
Посмотрите может можно как то улучшить?
Я в шелл скриптинге не очень силен.

#!/bin/sh

FILE=$1

cat $FILE|while read line
do
        USER=`echo "$line" |awk -F: '{print $1}'`
        Q=`echo "$line" |awk -F: '{print $2}'|awk -F, '{print NF}'`
        COU=1
        while [ $COU -lt $Q ] || [ $COU -eq $Q ]
        do
                PROC=`echo "$line" |awk -F: '{print $2}'|awk -F, '{print $'$COU'}'`
                ps -e -o user -o comm|while read prline
                do
                        PRUSER=`echo "$prline"|awk '{print $1}'`
                        PRPROC=`echo "$prline"|awk '{print $2}'`
                        if [ "$USER" = "$PRUSER" ] && [ "$PRPROC" = "$PROC" ]
                        then
                                echo "$PRUSER runs $PRPROC"
                        fi
                done
                COU=`expr $COU + 1`
        done
done

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

4. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от exn (??) on 14-Ноя-07, 13:30 
Хм, прикольный скрипт. А еще можно ожидать событий в proc ;)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 13:31 
>Хм, прикольный скрипт. А еще можно ожидать событий в proc ;)

Попадробней про это если можно...

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

6. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 14-Ноя-07, 15:09 
>Бот что я наваял, но кайетсыа это не эффективно.
>Посмотрите может можно как то улучшить?

Конечно можно! :)

- заменить
  cat $FILE|while read line; do ... done
  на
  while read line; do ... done <$FILE

- Откройне для себя -le (man test):
   while [ $COU -lt $Q ] || [ $COU -eq $Q ]
   можно заменить на
   while [ $COU -le $Q ]

Ну и ещё можно улучшить.. Например инициализировать две переменные в раз с помощью read:

PRUSER=`echo "$prline"|awk '{print $1}'`
PRPROC=`echo "$prline"|awk '{print $2}'`

заменить на

echo "$prline" | read PRUSER PRPROC

(Проверьте меня, вдруг ошибся :) )

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

7. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 15:16 
>[оверквотинг удален]
>помощью read:
>
>PRUSER=`echo "$prline"|awk '{print $1}'`
>PRPROC=`echo "$prline"|awk '{print $2}'`
>
>заменить на
>
>echo "$prline" | read PRUSER PRPROC
>
>(Проверьте меня, вдруг ошибся :) )

За while и le спасибо, а вот насчет последнего не совсем вьехал...
Да и еще как то медленно все работает, ведь столько раз ps работает, нет ли способа полегче??

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

8. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 15:22 
>[оверквотинг удален]
>>заменить на
>>
>>echo "$prline" | read PRUSER PRPROC
>>
>>(Проверьте меня, вдруг ошибся :) )
>
>За while и le спасибо, а вот насчет последнего не совсем вьехал...
>
>Да и еще как то медленно все работает, ведь столько раз ps
>работает, нет ли способа полегче??

echo "$prline" | read PRUSER PRPROC - понял что это но почемуто не заработало..

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

9. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 14-Ноя-07, 15:28 
>>Да и еще как то медленно все работает, ведь столько раз ps
>>работает, нет ли способа полегче??

Наверное, есть. Вам нужно алгоритм менять. Скажем вы обрабатываете файл и вызываете ps, а быстрее было бы вызывать ps и для него уже искать в файле.

>echo "$prline" | read PRUSER PRPROC - понял что это но почемуто
>не заработало..

[c0der@rock ~]$ /bin/zsh -c 'echo "1 2" | read ONE TWO; echo $ONE $TWO'
1 2
[c0der@rock ~]$ /bin/bash -c 'echo "1 2" | read ONE TWO; echo $ONE $TWO'

Мда.. в bash этот трюк почему-то не работает... =(

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

10. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 15:33 
>[оверквотинг удален]
>>echo "$prline" | read PRUSER PRPROC - понял что это но почемуто
>>не заработало..
>
>[c0der@rock ~]$ /bin/zsh -c 'echo "1 2" | read ONE TWO; echo
>$ONE $TWO'
>1 2
>[c0der@rock ~]$ /bin/bash -c 'echo "1 2" | read ONE TWO; echo
>$ONE $TWO'
>
>Мда.. в bash этот трюк почему-то не работает... =(

Да если не работает в bash в sh точно не заработает...
Да и Спасибо за мысль, сейчас перепишу код.

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

13. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 14-Ноя-07, 16:06 
[...]

Есть ещё одна идея ускорения, которая кажется вообще best.

Идея такая: составить пары пользователь-имя процесса из вывода ps. И составить такие же пары для вашего файла (Типа "развернуть" записи из файла в форму как у ps).

А потом задача сведётся к тому, чтобы найти одинаковые строчки в обоих файлах. И уже эти одинаковые строчки в цикл, построчно и выводить. В итоге мы получим что ps будет запущено ровно раз и ваш файл тоже раз-два будет обрабатываться. Возможно, понадобится два временных файла, а возможно и без них обойтись.

Hint: чтобы найти строки общие в двух файлах я бы посмотрел в сторону  comm.
Hint: awk -F: '{n=split($2, a, ","); for(i=1;i<=n;i++){printf("%s\t%s\n", $1, a)}}' file -- эта команда должна превратить ваш в файл в ps-подобный вид.

Удачи!

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

14. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 16:18 
>[оверквотинг удален]
>В итоге мы получим что ps будет запущено ровно раз и
>ваш файл тоже раз-два будет обрабатываться. Возможно, понадобится два временных файла,
>а возможно и без них обойтись.
>
>Hint: чтобы найти строки общие в двух файлах я бы посмотрел в
>сторону  comm.
>Hint: awk -F: '{n=split($2, a, ","); for(i=1;i<=n;i++){printf("%s\t%s\n", $1, a)}}' file -- эта
>команда должна превратить ваш в файл в ps-подобный вид.
>
>Удачи!

Да идея супер, но я не хочу слишком усложнять скрипт, все же это должно выглядеть так как будто написано девушкой :):).......

Но всеравно СпасИба:)

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

17. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 14-Ноя-07, 16:37 
[...]
>Да идея супер, но я не хочу слишком усложнять скрипт, все же
>это должно выглядеть так как будто написано девушкой :):).......

Эта моя идея мне кажется наилучшей. К тому же она и быстрее и более математична, так как в основе лежит пересечение пар.


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

11. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 14-Ноя-07, 15:51 
Про ускорение. Вот смотрите, что у меня вывела ваша команда ps:

[c0der@rock ~]$ ps -e -o user -o comm
USER     COMMAND
root     init
root     migration/0
root     ksoftirqd/0
root     watchdog/0
root     events/0
root     khelper
root     kthread
root     kblockd/0
root     kacpid
root     cqueue/0
root     kseriod
root     pdflush
root     pdflush
root     kswapd0
root     aio/0
root     kjournald
root     khubd
root     kpsmoused
root     udevd
root     pccardd
root     kjournald
root     kjournald
root     kjournald
syslogd  syslogd
klogd    klogd
root     acpid
root     crond
root     master
postfix  qmgr
root     login
root     mingetty
root     mingetty
root     mingetty
coder    zsh
coder    xinit
root     X
coder    fluxbox
coder    wmcpuload
coder    wmmemload
coder    wmclockmon
coder    wmdiskmon
coder    wmupmon
coder    wmnetload
coder    fbpager
coder    sh
coder    root-tail
coder    psi
coder    firefox
coder    run-mozilla.sh
coder    firefox-bin
postfix  pickup
coder    aterm
coder    zsh
coder    mpd
coder    mpd
coder    mpd
coder    ncmpc
coder    aterm
coder    zsh
coder    ps

Сразу видно, что первая строка нам не нужна. Также видно, что некоторые процессы повторяются, скажем от coder  у меня три процесса mpd, от рута три kjournald и три mingetty. Соответственно сразу идея -- удалить дубликаты чтобы не искать по нескольку раз. Вот как это можно сделать: ps -e -o user -o comm | sed 1d | sort -u

Вот что было до:

[c0der@rock ~]$ ps -e -o user -o comm | wc -l
62

И вот что после:

[c0der@rock ~]$ ps -e -o user -o comm | sed 1d | sort -u | wc -l
52

У меня это 10 строчек.

Ну и есть вот какая идея: считывать вывод ps и для каждой его строки grep'ать файл. Вот примерное описание:

ps -e -o user -o comm | sed 1d | sort -u | while read PROCESS; do
PUSER="`echo $PROCESS | awk '{print $1}'`"
PCMD="`echo $PROCESS | awk '{print $2}'`"
grep -qs "^$PUSER:.*$PCMD" file
if [ $? -eq 0 ]; then
   echo "User $PUSER run $PCMD"
else
   echo "USER $PUSER not run $PCMD"
di
done

Идею поняли? Вот только не все grep'ы понимают ключики -q и -s. В этом случае используйте перенаправление stdout и stderr в /dev/null

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

12. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 15:57 
>[оверквотинг удален]
>grep -qs "^$PUSER:.*$PCMD" file
>if [ $? -eq 0 ]; then
>   echo "User $PUSER run $PCMD"
>else
>   echo "USER $PUSER not run $PCMD"
>di
>done
>
>Идею поняли? Вот только не все grep'ы понимают ключики -q и -s.
>В этом случае используйте перенаправление stdout и stderr в /dev/null

Ооочень интересно спасибо о результатах сообщу дополнительно....

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

15. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от angra (ok) on 14-Ноя-07, 16:28 
Почитал тред, улыбнуло. Обычная проблема преподов - не умеют они ставить задачи.

1. Задачу можно решить используя ТОЛЬКО bash built-in. То есть без единой внешней команды, включая все ваши awk, grep, sort, etc
2. Если разрешается использовать внешние команды, то мы вызываем одну единственную - однострочник на perl, который и делает все необходимое опять таки без вызовов внешних команд, причем наиболее эффективным способом.

Первый вариант проверяет знание bash, второй умение эффективно решать задачу. А все перечисленное в этом топике из категории "ни рыба, ни мясо" и полезной нагрузки не несет.

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

16. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 16:33 
>[оверквотинг удален]
>
>1. Задачу можно решить используя ТОЛЬКО bash built-in. То есть без единой
>внешней команды, включая все ваши awk, grep, sort, etc
>2. Если разрешается использовать внешние команды, то мы вызываем одну единственную -
>однострочник на perl, который и делает все необходимое опять таки без
>вызовов внешних команд, причем наиболее эффективным способом.
>
>Первый вариант проверяет знание bash, второй умение эффективно решать задачу. А все
>перечисленное в этом топике из категории "ни рыба, ни мясо" и
>полезной нагрузки не несет.

Так препод строго настрого запретил использоват perl.:)
А может расскажите как же решить задачу исползуя ТОЛЬКО bash built-in. Интересно всетаки:)

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

18. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 14-Ноя-07, 16:39 

Спасибо, angra! Пришел и дал нам всем понять, что фигню написали)

>1. Задачу можно решить используя ТОЛЬКО bash built-in. То есть без единой
>внешней команды, включая все ваши awk, grep, sort, etc

Давай-ка лучше пример приведи. Я не видел, чтобы ps была built-in. А если читать из /proc, то это непортабельно.

>2. Если разрешается использовать внешние команды, то мы вызываем одну единственную -
>однострочник на perl, который и делает все необходимое опять таки без
>вызовов внешних команд, причем наиболее эффективным способом.

Как без ps-то обойдёшься?

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

19. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 14-Ноя-07, 16:44 
>[оверквотинг удален]
>>внешней команды, включая все ваши awk, grep, sort, etc
>
>Давай-ка лучше пример приведи. Я не видел, чтобы ps была built-in. А
>если читать из /proc, то это непортабельно.
>
>>2. Если разрешается использовать внешние команды, то мы вызываем одну единственную -
>>однострочник на perl, который и делает все необходимое опять таки без
>>вызовов внешних команд, причем наиболее эффективным способом.
>
>Как без ps-то обойдёшься?

Да оочень кочетца примерчеГ посматреть.

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

20. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от angra (ok) on 14-Ноя-07, 19:41 
Абсолютно верно, читать proc. В BSD и Linux работает. Абсолютно портабельных скриптов не существует в природе(например все ваши шелл скрипты не пойдут на виндовой платформе без cygwin). Также хотелось бы заметить что аргументы команды ps очень отличаются в разных версиях UNIX-like систем и портабельнасть, зависящая от ps, ничем не лучше портабельности зависящей от наличия /proc.

По поводу примера, простите, но я не вижу смысла тратить кучу времени просто для того чтобы доказать кому то, что это возможно. Интересности в этом задании тоже нет, просто техника и много рутины, подобное писать уже приходилось. Если есть желание напишите сами, если натолкнетесь на принципиальное ограничение bash напишите, посмотрим как его обойти.

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

21. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 15-Ноя-07, 08:28 
>[оверквотинг удален]
>не существует в природе(например все ваши шелл скрипты не пойдут на
>виндовой платформе без cygwin). Также хотелось бы заметить что аргументы команды
>ps очень отличаются в разных версиях UNIX-like систем и портабельнасть, зависящая
>от ps, ничем не лучше портабельности зависящей от наличия /proc.
>
>По поводу примера, простите, но я не вижу смысла тратить кучу времени
>просто для того чтобы доказать кому то, что это возможно. Интересности
>в этом задании тоже нет, просто техника и много рутины, подобное
>писать уже приходилось. Если есть желание напишите сами, если натолкнетесь на
>принципиальное ограничение bash напишите, посмотрим как его обойти.

Ну если вам уже приходилось писать подобное, а думаю у вас не заняло-бы много времени привести пример. Но это ваше личное дело, просто говорит что что-то ПЛОХО и не показивать как же это ХОРОШО, тоже не красиво. Вот я например даже не представляю как это можно реализовать при помощи чтения /proc, а ведь мне интересно. Ну да ладно, может тогда хотя-бы приведете пример на Perl, о котором вы тоже упомянули.

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

22. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от angra (ok) on 15-Ноя-07, 09:21 
>Ну если вам уже приходилось писать подобное, а думаю у вас не
>заняло-бы много времени привести пример. Но это ваше личное дело, просто
>говорит что что-то ПЛОХО и не показивать как же это ХОРОШО,
>тоже не красиво. Вот я например даже не представляю как это
>можно реализовать при помощи чтения /proc, а ведь мне интересно. Ну
>да ладно, может тогда хотя-бы приведете пример на Perl, о котором
>вы тоже упомянули.

Я не говорил, что примеры в этом топике были плохи. Ни в коем случае. Просто если проверяется знание bash, то обычно запрещается пользоваться не built-in. Если же нужно просто решить задачу, то намного проще это сделать вызвав perl. ИМХО шелл хорош только для простых задач, где нет серьезной логики и максимальная сложность структур данных это одномерный массив (в данном же случае нужны хеши), плюс некритичность по времени исполнения.

По поводу /proc на шелл. У bash есть следующие возможности
1) получение списка файлов по маске, например for i in /proc/*/status
2) чтение файла построчно через while read и перенаправление
3) простейшие операции со строками
В самом /proc для каждого процесса в status есть необходимая информация. Остается собрать все это в кучу, а это уже "дело техники".

В perl при желании можно сделать тоже самое, но понятней и компактней, можно просто вызвать _один_ раз ps, а можно поискать на CPAN модуль который делает 90% задания :)

P.S. Если препод явно указал что можно использовать внешние команды, но не использовать perl и вообще ЯП отличные от bash, то тогда другое дело, но об этом не было сказано в первом посте.

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

23. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 15-Ноя-07, 09:30 
>[оверквотинг удален]
>В самом /proc для каждого процесса в status есть необходимая информация. Остается
>собрать все это в кучу, а это уже "дело техники".
>
>В perl при желании можно сделать тоже самое, но понятней и компактней,
>можно просто вызвать _один_ раз ps, а можно поискать на CPAN
>модуль который делает 90% задания :)
>
>P.S. Если препод явно указал что можно использовать внешние команды, но не
>использовать perl и вообще ЯП отличные от bash, то тогда другое
>дело, но об этом не было сказано в первом посте.

На самом деле я не знаю что там сказал препод:) мне принесли бумажку на которой написано условие и большими буквами написано что нужен SHELL скрипт. Ну я и решил исползоват все, но не Perl:).
Да ладно.... Спасибо всем за помощ, что не говори,а "opennet" the best.

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

24. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от angra (ok) on 15-Ноя-07, 10:28 
Вот за это я и не люблю большинство преподов - не умеют они ставить задачи. Кроме того многие еще и не приемлют решения не совпадающие на 80% с их собственными. Это относится не только к информатике.

На самом деле задания на bash built-in или на ограниченный набор команд довольно интересны и позволяют оценить уровень сисадмина при приходе на работу. На таких заданиях валится большинство записавших в резюме "хорошее владение bash". Также себя хорошо зарекомендовали задания типа "узнать текущее время при помощи ls", то есть в задании одно, но тестируется знание совсем другого.

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

25. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 15-Ноя-07, 10:33 
>[оверквотинг удален]
>они ставить задачи. Кроме того многие еще и не приемлют решения
>не совпадающие на 80% с их собственными. Это относится не только
>к информатике.
>
>На самом деле задания на bash built-in или на ограниченный набор команд
>довольно интересны и позволяют оценить уровень сисадмина при приходе на работу.
>На таких заданиях валится большинство записавших в резюме "хорошее владение bash".
>Также себя хорошо зарекомендовали задания типа "узнать текущее время при помощи
>ls", то есть в задании одно, но тестируется знание совсем другого.
>

У меня опыта с *nix системами не очень много, но я стараюсь:), Блин и как же узнать текущее время при помощи ls ???

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

26. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 15-Ноя-07, 10:43 
>Блин и как же узнать текущее время при помощи ls ???

У меня есть предположение: нужно посмотреть время последнего доступа/модификации к какому-нить файлу который меняется каждую секунду, скажем. Наверное, что-нить где-нить в /proc или /dev

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

27. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 15-Ноя-07, 10:48 
>>Блин и как же узнать текущее время при помощи ls ???
>
>У меня есть предположение: нужно посмотреть время последнего доступа/модификации к какому-нить файлу
>который меняется каждую секунду, скажем. Наверное, что-нить где-нить в /proc или
>/dev

Наверно да, я думаю сам процесс ls создаст себя в /proc, вот наверно можно посмотреть когда он был создан...

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

28. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 15-Ноя-07, 10:51 
>>>Блин и как же узнать текущее время при помощи ls ???
>>
>>У меня есть предположение: нужно посмотреть время последнего доступа/модификации к какому-нить файлу
>>который меняется каждую секунду, скажем. Наверное, что-нить где-нить в /proc или
>>/dev
>
>Наверно да, я думаю сам процесс ls создаст себя в /proc, вот
>наверно можно посмотреть когда он был создан...

Ну вот! Мы с вами и ответ уже нашли -- типа ls -l /proc/self/stat


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

29. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 15-Ноя-07, 11:00 
>[оверквотинг удален]
>>>
>>>У меня есть предположение: нужно посмотреть время последнего доступа/модификации к какому-нить файлу
>>>который меняется каждую секунду, скажем. Наверное, что-нить где-нить в /proc или
>>>/dev
>>
>>Наверно да, я думаю сам процесс ls создаст себя в /proc, вот
>>наверно можно посмотреть когда он был создан...
>
>Ну вот! Мы с вами и ответ уже нашли -- типа ls
>-l /proc/self/stat

Вот мне интересно, у меня Solaris 10, в /proc у мена выглядит так:
[root@vm-sol:/] # ls -l /proc
total 92
dr-x--x--x   5 root     root         864 Nov 15 09:52 0
dr-x--x--x   5 root     root         864 Nov 15 09:52 1
dr-x--x--x   5 root     root         864 Nov 15 09:52 151
dr-x--x--x   5 root     root         864 Nov 15 09:52 156
dr-x--x--x   5 daemon   daemon       864 Nov 15 09:52 165
dr-x--x--x   5 root     root         864 Nov 15 09:52 174
dr-x--x--x   5 root     root         864 Nov 15 09:52 179
dr-x--x--x   5 root     root         864 Nov 15 09:52 184
dr-x--x--x   5 root     root         864 Nov 15 09:52 2
dr-x--x--x   5 root     root         864 Nov 15 09:52 227
dr-x--x--x   5 root     root         864 Nov 15 09:52 239
dr-x--x--x   5 daemon   daemon       864 Nov 15 09:52 258
dr-x--x--x   5 daemon   daemon       864 Nov 15 09:52 263
dr-x--x--x   5 daemon   daemon       864 Nov 15 09:52 269
dr-x--x--x   5 root     root         864 Nov 15 09:52 274
dr-x--x--x   5 daemon   daemon       864 Nov 15 09:52 277
dr-x--x--x   5 root     root         864 Nov 15 09:52 279
dr-x--x--x   5 daemon   daemon       864 Nov 15 09:52 295
dr-x--x--x   5 root     root         864 Nov 15 09:52 3
dr-x--x--x   5 root     root         864 Nov 15 09:52 306
dr-x--x--x   5 root     root         864 Nov 15 09:52 309
dr-x--x--x   5 root     root         864 Nov 15 09:52 310
dr-x--x--x   5 root     root         864 Nov 15 09:52 323
dr-x--x--x   5 root     root         864 Nov 15 09:52 326
dr-x--x--x   5 root     root         864 Nov 15 09:52 349
dr-x--x--x   5 root     root         864 Nov 15 09:52 350
dr-x--x--x   5 root     root         864 Nov 15 09:52 351
dr-x--x--x   5 root     root         864 Nov 15 09:52 423
dr-x--x--x   5 root     root         864 Nov 15 09:52 424
dr-x--x--x   5 root     root         864 Nov 15 09:52 437
dr-x--x--x   5 root     root         864 Nov 15 09:52 458
dr-x--x--x   5 root     root         864 Nov 15 09:52 465
dr-x--x--x   5 root     other        864 Nov 15 09:53 467
dr-x--x--x   5 root     root         864 Nov 15 09:53 472
dr-x--x--x   5 root     root         864 Nov 15 09:53 503
dr-x--x--x   5 root     root         864 Nov 15 09:53 529
dr-x--x--x   5 root     root         864 Nov 15 09:53 541
dr-x--x--x   5 smmsp    smmsp        864 Nov 15 09:54 620
dr-x--x--x   5 root     root         864 Nov 15 09:54 621
dr-x--x--x   5 root     root         864 Nov 15 11:55 681
dr-x--x--x   5 root     root         864 Nov 15 11:55 684
dr-x--x--x   5 root     root         864 Nov 15 11:55 686
dr-x--x--x   5 root     root         864 Nov 15 11:56 694
dr-x--x--x   5 root     root         864 Nov 15 09:52 7
dr-x--x--x   5 root     root         864 Nov 15 09:52 9
dr-x--x--x   5 root     root         864 Nov 15 09:52 98

Тут как я понял PID-ы , и как узнать какой из них принадлежит ls??

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

30. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 15-Ноя-07, 11:04 
[...]
>Тут как я понял PID-ы , и как узнать какой из них
>принадлежит ls??

В нормальных Unix'ах ( ;) ) /proc/self это симлинк, который указывает на каталог с pid-ом вызвавшего процесса.

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

31. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от angra (ok) on 15-Ноя-07, 11:59 
В linux в /proc кроме списка процессов еще и переменные ядра, например /proc/uptime, которые  имеют текущее время. Задача изначально давалась для linux(а точнее человеку давался доступ к машине и предлагали сделать, так что разговора о портабельности не было). Основной смысл задачи, что спрашивается про ls, а проверяется знание что такое /proc. Однако другие варианты ее решения тоже принимались. Пример еще одной простенькой задачи:
Почему find / -name a* может выдать разный набор файлов для разных пользователей, а иногда даже и для одного.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

32. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 15-Ноя-07, 12:01 
[...]
>Почему find / -name a* может выдать разный набор файлов для разных
>пользователей, а иногда даже и для одного.

Потому что звёздочку раскроет шелл и подставит вместо файлы из текущего каталога?


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

33. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от angra (ok) on 15-Ноя-07, 12:28 
>Потому что звёздочку раскроет шелл и подставит вместо файлы из текущего каталога?

Абсолютно верно. Опять таки в задаче спрашивается про find, а проверяется понимание шелла. И довольно большой процент с этим не справляется и начинает говорить про права доступа. Кстати права доступа(стандартные, без всяких MAC и ACL) тоже больная тема и при кажущейся простоте почти никто их на 100% не знает :(

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

34. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 15-Ноя-07, 12:40 
Как интресно, а вот у нас када на работу принимают таких вапросов не задают:) Интересно, может открыть топик где будем друг другу такие вот интересные задачки задавать, или может тут прямо и продолжим, как думаете стоит???
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

35. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от phpcoder email(??) on 15-Ноя-07, 12:41 
>Как интресно, а вот у нас када на работу принимают таких вапросов
>не задают:) А вот интересно может открыть топик где будем друг
>другу такие вот интересные задачки задавать, или может тут прямо и
>продолжим, как думаете стоит???

Надо новый топ. Задачки интересные. И для ума, и для самопроверки.


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

36. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Аноним on 20-Ноя-07, 00:47 
>>Как интресно, а вот у нас када на работу принимают таких вапросов
>>не задают:) А вот интересно может открыть топик где будем друг
>>другу такие вот интересные задачки задавать, или может тут прямо и
>>продолжим, как думаете стоит???
>
>Надо новый топ. Задачки интересные. И для ума, и для самопроверки.

ну скрипт написать можно вот только отсос за скрипт вероятно подруга будет делать автору сообщения, а не кому-то из помошников...

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

37. "Не нужный Shell скрипт, задали в универе..."  
Сообщение от Arpo email(ok) on 20-Ноя-07, 08:52 
>>>Как интресно, а вот у нас када на работу принимают таких вапросов
>>>не задают:) А вот интересно может открыть топик где будем друг
>>>другу такие вот интересные задачки задавать, или может тут прямо и
>>>продолжим, как думаете стоит???
>>
>>Надо новый топ. Задачки интересные. И для ума, и для самопроверки.
>
>ну скрипт написать можно вот только отсос за скрипт вероятно подруга будет
>делать автору сообщения, а не кому-то из помошников...

ну зачем же так грубо.. не красиво завидовать людям

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

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

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




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

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