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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

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

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
      Шпаргалка по частым синтаксическим оборотам.

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

 

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

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fscpsd
а планировщику что указать?
там стоит команда:

Код:
*/1 * * * * /etc/3g_up.sh; /bin/sleep 30; /etc/3g_up.sh

убрать последние команды?

Код:
*/1 * * * * /etc/3g_up.sh

так сработает?

Всего записей: 1078 | Зарегистр. 27-02-2015 | Отправлено: 07:54 22-05-2022
fscpsd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yuriko1158
Можно сделать так, да.  
 
Но вообще, раз уж у вас в планировщике было настроено ожидание 30 секунд (это команда "/bin/sleep 30") и повторный запуск скрипта, тогда вам незачем было и таймаут настраивать. В имеющемся у вас сценарии скрипт пингует один раз, но по кронтабу запускается каждые 30 секунд. Если этого достаточно, тогда лучше было оставить всё как есть, ничего не менять в кронтабе, а просто убрать из скрипта всё, кроме верхней строчки и старой строчки с пингом:

Код:
ping 8.8.8.8 -c 1 -w 3 > /dev/null 2>&1
— если работало раньше, то в точности так же продолжит работать и сейчас.

Всего записей: 1825 | Зарегистр. 16-09-2010 | Отправлено: 08:06 22-05-2022
yuriko1158

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

Всего записей: 1078 | Зарегистр. 27-02-2015 | Отправлено: 09:09 22-05-2022 | Исправлено: yuriko1158, 09:23 22-05-2022
fscpsd



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

Цитата:
скрипт не нужно перезапускать,думаю незачем.достаточно одного запуска,после запуска системы
Разве вам нужно только один раз выполнить команду ping при запуске системы? Другое ведь было техзадание изначально)) Если всё-таки один раз при запуске, тогда это будет вопрос для темы «Новичок в линуксе» и нужно будет сообщить название вашей системы, от этого зависит, каким образом добавляются задания при старте, много где это делается по-разному.
Цитата:
а по умолчанию какой размер пакета отправляет та команда?
64 байта (56 байт + 8 байт заголовок)

Всего записей: 1825 | Зарегистр. 16-09-2010 | Отправлено: 11:08 22-05-2022
yuriko1158

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

Цитата:
Разве вам нужно только один раз выполнить команду ping при запуске системы?

нет.
я в планировщике указал:

Код:
/1 * * * * /etc/3g_up.sh

в скрипте указал:

Код:
#!/bin/sh
ping tele2.ru -i 3 > /dev/null 2>&1

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

Всего записей: 1078 | Зарегистр. 27-02-2015 | Отправлено: 11:24 22-05-2022 | Исправлено: yuriko1158, 11:29 22-05-2022
fscpsd



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

Цитата:
Разве вам нужно только один раз выполнить команду ping при запуске системы?
Цитата:
нет
 

Но вы ведь постом выше сказали, что «да»)) Я что-то совсем запутался.
 

Цитата:
я в планировщике указал:
Код:
/1 * * * * /etc/3g_up.sh
 

Формально в самом начале, прямо перед "/1", нужно бы ещё звёздочку поставить. Но раз у вас и так работает, то и бог с ним.

Всего записей: 1825 | Зарегистр. 16-09-2010 | Отправлено: 11:33 22-05-2022
yuriko1158

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fscpsd
сейчас посмотрел,там стоит звездочка.не всё копировал.

Цитата:
Но вы ведь постом выше сказали, что «да»)) Я что-то совсем запутался


ничего страшного.я сам слегка в тумане.запутался короче ...
тот график и без планировщика показывает то же самое.видимо сам ПК инициирует перегон пакетов.
надо временно прекратить обсуждение вопроса.

Всего записей: 1078 | Зарегистр. 27-02-2015 | Отправлено: 13:43 22-05-2022
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yuriko1158
Не пойму зачем оставили скрипт, я ж объяснил что он тут лишний, зачем вызывать скрипт если в нём единственная команда? К тому же разумнее пинговать непрерывно.
А то что я вижу, Вы будете бесконечно плодить процессы пинга же, и рано или поздно система помрёт. Не вижу опции -c или -w у ping'а в Вашем скрипте.
 
Я всё ещё рекомендую сделать как сказал выше.
 
 
fscpsd
Цитата:
А почему "1.1", что это за нотация такая?
aton умеет в такую запись ip адреса, раскрывается в 1.0.0.1. (man inet_aton)

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 15:49 22-05-2022
yuriko1158

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

Всего записей: 1078 | Зарегистр. 27-02-2015 | Отправлено: 10:44 26-05-2022
tirex2k



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

Код:
chromium-browser https://chrome.google.com/webstore/detail/cryptopro-extension-forc/iifchhfnnmpdbibifmljnfjhpififfog?hl=ru

Всего записей: 70 | Зарегистр. 09-12-2004 | Отправлено: 10:59 21-07-2022
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tirex2k
Цитата:
нужно запустить и дождаться завершения работы запущенной программы  
по умолчанию именно так и происходит при запуске команды из командной строке эмулятора терминала

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 14:18 22-07-2022
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто-то сталкивался, есть файл состоящий из блоков:
2
3
1
####
3
2
1
####
...
и т.д. чем лучше отсортировать чтобы получить
1
2
3
###
1
2
3
###
цифры только для примера т.к. могут быть и слова.

Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 18:58 01-08-2022
sdr77

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
1) разобрать блоки пофайлово во временную директорию: mktemp -d, awk: printf >> $tmpfile_NNN
2) сортировать каждый блок-файл по отдельности: find | xagrs sort
3) слить обратно.  

Всего записей: 386 | Зарегистр. 22-07-2005 | Отправлено: 19:52 01-08-2022 | Исправлено: sdr77, 19:53 01-08-2022
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, los
gawk?

Код:
awk "function aprint(){asort(a);for(i in a){print a[i];delete a[i]};i=0}$0!~/^###/{a[i++]=$0;}$0~/^###/{aprint();print $0;}END{aprint()}"

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 20:02 01-08-2022
los

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

Цитата:
1) разобрать блоки пофайлово во временную директорию: mktemp -d, awk: printf >> $tmpfile_NNN  

Спасибо, этот вариант самый очевидный, но наверное не самый практичный прюс потенциальные проблемы если разделителем(в примере это # ) будут выступать знаки совпадающие с какой либо строкой.
 
Доброе время, Alex_Piggy.

Цитата:
gawk?

Хотелось бы более универсальное, т.е. posix, дабы обойтись без установки доп. программ  в данном случае gawk. Но все равно спасибо.

Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 21:29 01-08-2022 | Исправлено: los, 21:33 01-08-2022
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
POSIX вариант будет выглядеть примерно так как сказал sdr77
 

Код:
tf="$(mktemp)" || exit 1;
 
s() {
  sort -n "$tf";
  : > "$tf";
} </dev/null;
 
while read -r line; do
  if [ "x$line" = "x####" ]; then
    s;
    echo "$line";
  else
    echo "$line" >> "$tf";
  fi;
done </tmp/in;
 
s;
rm "$tf"

 
функцию написал, потому что не люблю один и тот же код писать дважды, потом при исправлениях и доработках сложнее следить за всеми единообразными местами.
p.s. ок, mktemp это не POSIX утилита

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 01:50 02-08-2022 | Исправлено: Alukardd, 02:10 02-08-2022
sdr77

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
> проблемы если разделителем(в примере это # ) будут выступать знаки совпадающие с какой либо строкой.  
 
тогда пусть искусственный интеллект распознает - где строка с норм данными, а где разделитель.
GIGO - знаете что такое ? вот у вас оно самое.

Всего записей: 386 | Зарегистр. 22-07-2005 | Отправлено: 08:46 02-08-2022
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy, sdr77, Alukardd,
Всем еще раз спасибо.
 

Цитата:
p.s. ок, mktemp это не POSIX утилита

Но она есть не только в Linux, но и в некоторых Unix системах и в BSD.

Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 09:45 02-08-2022
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Цитата:
Цитата:
p.s. ок, mktemp это не POSIX утилита
 
Но она есть не только в Linux, но и в некоторых Unix системах и в BSD.  
так-то mktemp (на самом деле, как и многие другие утилиты) пришли из *BSD.
Если уж совсем докапываться до слов, то Linux утилит как бы и нет (это просто ядро), разве что какой-нить git к ним можно отнести.
А так большинство используемого ПО либо GNU, либо *BSD (не всё разумеется, но среди базовых команд в shell это точно так).
Есть ещё некоторая боль в том что одни и те же утилиты есть в исполнении GNU и скажем так не-GNU, так вот отличаться между ними может не только функционал, но и базовое поведение. Для примера отличий есть те же sed и awk.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 13:16 02-08-2022 | Исправлено: Alukardd, 18:21 02-08-2022
tirex2k



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго дня, помогите, есть такая строка

Код:
for iface in `ifconfig | cut -c 1-8 | sort | uniq -u | grep -v lo | grep -v : `; do echo $iface; done

если сетевой интерфейс имеет 8 символов "enp2s0s5" то все отлично работает, а если 6 символов "enp2s0" то не работает, как модифицировать код чтобы что бы работало и на 6 и на 8 символов?

Всего записей: 70 | Зарегистр. 09-12-2004 | Отправлено: 14:25 22-08-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Компьютерный форум 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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru