Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135

Открыть новую тему     Написать ответ в эту тему

digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи вопрошающие! Если ваша система отлична от ГНУ, и в то же время вы желаете обойтись только дефолтными средствами, указывайте и то и другое сразу, пожалуйста.


UNIX Shell

 
   Это глобальная тема по юниксовой командной оболочке, как по интерактивной работе в командной строке, так и по шелл-скриптам. Ключевые слова: sh, bash, zsh, tcsh, busybox, readline, coreutils, cp, mv, ln, rm, ls, readlink, mkdir, touch, stat, date, test, sleep, chown, chmod, chattr, dd, df, du, env, echo, cat, less, man, grep, sort, findutils, find, locate, xargs, md5sum, cmp, diff, patch, ps, kill, killall, tar, gzip, bzip2, xz, mount, fdisk, parted, mkfs, fsck, e2fsprogs, mtools, ss, netcat, netstat, rsync, ssh, scp, sftp, lftp, ncftp, time, strace.
   Неинтерактивная обработка текста (sed, awk, perl) пока тоже здесь.
   Смотри в других ветках: wget, convert, montage, mogrify и др., gs, git, 7z, p7zip, soffice, mplayer, mencoder, vlc, vim, mc, mcedit, kioclient.
 
 

Hint! Русские маны (подустаревшие, не всегда полные и не всегда для вашей системы) можно попытаться найти на Опеннете, к примеру: bash, tar, grep.

 
Готовые решения:
  • commandlinefu.com
    Крупнейшая база полезных однострочников на командной оболочке с ранжированием на основе пользовательского голосования.
     
  • shell-fu.org
    Аналогично, но поменьше и формат записей более свободный, поэтому встречаются и однострочники, и развернутые скрипты, и просто советы.
     
  • Useful one-line scripts for sed
    Почти исчерпывающий список решений для тех случаев, когда sed незаменим. Более сложные скрипты с sed.sf.net — только для тех, кто знает толк... :)

 
Учебная литература:
  • Greg’s Wiki (http://mywiki.wooledge.org)
    Наиболее обширный авторский сборник постоянно обновляющихся материалов по Башу.

    1. Bash Pitfalls
      (Частые ошибки программирования на Баше: [1], [2], [3], [4], [5] — пер. на русский по сост. на дек. 2008 г.).
      Рассмотрены преимущественно ошибки, возникающие из-за непонимания отличия шелла от «нормальных» скриптовых языков. Если вы уже владеете, например, Перлом, то это вполне может быть ваше первое руководство для ознакомления с Башем.
    2. Bash FAQ
    3. Bash Guide
    4. Bash Reference Sheet
      Шпаргалка по частым синтаксическим оборотам.

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

 

Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.
Первый пост темы имел вид...

Всего записей: 288 | Зарегистр. 19-04-2003 | Отправлено: 18:51 16-05-2008 | Исправлено: qw12, 09:42 24-03-2020
vlader2004



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мы в Юниксе, дружище. Найди другое средство для зеркалирования информации и не парься.
 

Всего записей: 460 | Зарегистр. 31-05-2004 | Отправлено: 14:26 17-05-2008 | Исправлено: vlader2004, 14:27 17-05-2008
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Рад выслушать любые предложения, а насчет UNIXа не понял, ветка вроде бы и про Linux тоже. Вопрос не в средстве зеркалировании, а в последующей его чистке.

Всего записей: 288 | Зарегистр. 19-04-2003 | Отправлено: 18:44 17-05-2008 | Исправлено: digital422, 18:45 17-05-2008
NightSpamer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
digital422, А если сначала создать (чем-то вроде mkdir -p `find $SOURCE_DIR -name '*.OLD*' -exec echo $TARGET_DIR{} \; | grep -o ".*\/" | sort | uniq`) папки, и вторым проходом уже перемещать файлы?
Криво, как-то, но может и заработать. Других идей пока всё равно нет...

Всего записей: 291 | Зарегистр. 28-11-2006 | Отправлено: 08:33 19-05-2008
realbrother

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ОНЛАЙН КИНОТЕАТР - ВЫСОЧАЙШЕЕ КАЧЕСТВО ПРОСМОТРА В ИНТЕРНЕТЕ! ВСЕ НОВИНКИ, АРХИВ ФИЛЬМОВ ОБНОВЛЯЕТСЯ ЕЖЕДНЕВНО! ВСЕГО ДОБРОГО!
 
www.спам.ru

Всего записей: 1 | Зарегистр. 19-05-2008 | Отправлено: 21:52 19-05-2008 | Исправлено: ShriEkeR, 14:47 25-12-2009
amorua

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
if [ -e `dirname $NEWPATH/$FILE` ]; then
 mv $FILE  $NEWPATH/$FILE
else  
 mkdir `dirname $NEWPATH/$FILE`
 mv $FILE  $NEWPATH/$FILE
fi

Всего записей: 429 | Зарегистр. 09-02-2004 | Отправлено: 23:20 20-05-2008 | Исправлено: amorua, 23:21 20-05-2008
NightSpamer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
amorua
mkdir /a/b/c/d не создаёт /a/b/c/d если есть только /a/b/. Нужно mkdir -p

Всего записей: 291 | Зарегистр. 28-11-2006 | Отправлено: 11:31 21-05-2008
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, попробую!
Нужна помощь еще в одном скрипте, его задача - проверять 2 папки, IN и OUT.
Проверять папку OUT и если там есть файлы как в IN, то не копировать их. Если в IN папке файл появился, то копировать в папку OUT (если еще сделать проверку по контрольным суммам, будет здорово).
Вот мой вариант, но в нем неправильно сделана проверка папок, поэтому копирование не идет:
 
#!/bin/sh
PATH_IN="/backup/IN/"
PATH_OUT="/backup/OUT"
FIND_IN=`find $PATH_IN -iname *.doc -type f`
 
for i in $FIND_IN
do
echo $i
if [test -s "$i"]; then
else
cp $PATH_IN*.* $PATH_OUT
fi
done

Всего записей: 288 | Зарегистр. 19-04-2003 | Отправлено: 09:26 04-08-2008 | Исправлено: digital422, 11:53 04-08-2008
iltmpz

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
по-моему в cp есть опция - не перезаписывать существующие файлы, ну или файлы с более поздней датой

Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 13:30 04-08-2008
SysCommander

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Проверять папку OUT и если там есть файлы как в IN, то не копировать их.

 
посмотри в сторону rsync, тем более что обе директории локальные.

Всего записей: 421 | Зарегистр. 20-07-2007 | Отправлено: 20:24 04-08-2008
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
хм, не знал что так просто, cp -u.

Всего записей: 288 | Зарегистр. 19-04-2003 | Отправлено: 11:25 05-08-2008
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Снова возникла задача для скрипта. Есть какие-то проблемы с железом, в логах появляется сообщение  
NETDEV WATCHDOG: eth0: transmit timed out, железо поменяется, но неизвестно когда.
Нужен скрипт, в котором при появлении сообщения:
tail -f /var/log/syslog |grep "NETDEV WATCHDOG"
выполнялась комманда reboot. Поможете?

Всего записей: 288 | Зарегистр. 19-04-2003 | Отправлено: 13:45 16-08-2008
SysCommander

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
железо поменяется, но неизвестно когда

 
Гы. Так недалеко и до "зарплата будет, но неизвестно когда". Советую задуматься о смене работы.
 

Цитата:
выполнялась комманда reboot

 
А просто вариация на тему
 
ifconfig eth0 down; ifconfig eth0 up
 
или rmmod+modprobe модуля для сетевушки не помогает?
 
 

Всего записей: 421 | Зарегистр. 20-07-2007 | Отправлено: 15:17 16-08-2008
albel



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
digital422
ну можно примерно так через временный файл:

Код:
 
#!/bin/bash
##
 
# если временный файл существует, удаляем его
if [ -e tmpfile ]; then  
    rm tmpfile
fi
# создаём временный файл нулевого размера
touch tmpfile
 
# пока размер остаётся нулевым, перечитываем файл syslog
while [ ! -s tmpfile ]; do
    tail /var/log/syslog | grep "NETDEV WATCHDOG" > tmpfile
done
# как только файл ненулевой, перегружаемся
reboot

 
Добавлено:
SysCommander

Цитата:
ifconfig eth0 down; ifconfig eth0 up  

проще тогда через service network restart


----------
Я никогда не спорю. Я никогда не противоречу. Я иногда забываю. / © Б.Дизраэли/

Всего записей: 11001 | Зарегистр. 30-08-2002 | Отправлено: 15:23 16-08-2008 | Исправлено: albel, 15:24 16-08-2008
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это плавающая проблема, железо может работать больше месяца, а может и один день. Мат плата в принципе новая, Nvidia чипсет, видимо из-за этого возникает проблема с доступом по сети, встроенные сетевые карты при подключении разъема вешали комп намертво, поставил Делинки 530-е.
Пока сделал самое простое:
 
if ping -q -c 2 $HOST; then
    echo "ping OK"
else
    echo "ping BAD"
    reboot
fi

Всего записей: 288 | Зарегистр. 19-04-2003 | Отправлено: 20:44 16-08-2008
albel



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
digital422
а с tail'ом вариант чем не устроил?

----------
Я никогда не спорю. Я никогда не противоречу. Я иногда забываю. / © Б.Дизраэли/

Всего записей: 11001 | Зарегистр. 30-08-2002 | Отправлено: 20:53 16-08-2008
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Буду пробовать и с tail, просто с ping нашел решение быстрее и его запустил в работу, не хочется ради нажатия одной кнопки выезжать на объект.
Вопрос: этот скрипт запускать через cron или демоном ?

Всего записей: 288 | Зарегистр. 19-04-2003 | Отправлено: 11:26 17-08-2008 | Исправлено: digital422, 11:38 17-08-2008
albel



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
digital422
Как хотите. Если по крону - то надо предусмотреть завершение работы скрипта перед следующим запуском.

----------
Я никогда не спорю. Я никогда не противоречу. Я иногда забываю. / © Б.Дизраэли/

Всего записей: 11001 | Зарегистр. 30-08-2002 | Отправлено: 12:05 17-08-2008
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Запустил по cron, не срабатывает. завершение работы скрипта перед следующим запуском - exit 0 ?

Всего записей: 288 | Зарегистр. 19-04-2003 | Отправлено: 15:44 17-08-2008
albel



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
digital422
гм. Ну, выход из скрипта можно и через exit сделать, да. Вопрос в том, что тогда надо ещё прописывать время в скрипт или проверять, не запущен ли уже скрипт; если запущен - не стартовать новый. Второй путь прощё. Через ps | grep...

----------
Я никогда не спорю. Я никогда не противоречу. Я иногда забываю. / © Б.Дизраэли/

Всего записей: 11001 | Зарегистр. 30-08-2002 | Отправлено: 23:19 18-08-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135

Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru