пользователя FTP к корневой директории?

Я настраивал свой сервер Ubuntu 14.04.

Я хочу иметь доступ по FTP (я использую входит), в основном для моего сервера apache2, поэтому я добавил нового пользователя в ВСП-данных группы. Я также настроить параметры входит.конф, только Локальные пользователи, и chroot_local_user=да.

Я изменил мой домашний каталог нового пользователя в файле/var/www в/дом. С разрешения 755 (local_umask=022).

Теперь я могу создавать файлы, загрузить их в каталог/var/www в/Главная/ каталог и не может перейти в корневой каталог / по назначению по соображениям безопасности.

Но какая стратегия может я теперь использую, когда я хочу изменить некоторые конфигурационные файлы, скачать файлы журналов и так далее, когда я только позволяют пользователям всегда оставаться на своем домашнем каталоге?

Какие другие методы обеспечения безопасности настоятельно рекомендуем, чтобы мой FTP-сервер безопасности?

+389
Ricardo Frederico Leote Mota 17 мар. 2012 г., 10:06:56
25 ответов

Оказывается, Перл-МПК-работать в дистрибутивах RHEL-7-сервер-опционально-пакеты репозитория, которые не были включены.

Эти шаги, которые я предпринял, чтобы исправить проблему:

подписка-менеджер # РЕПО --включить=и RHEL-7-сервер-опционально-пакеты
Хранилище 'с RHEL-7-сервер-опционально-пакеты включена эта система.
# поиск ням Перл-МПК-беги
...
Перл-МПК-бежать.noarch : модуль Perl для взаимодействия с дочерними процессами

Теперь на Perl-МПК-запустить пакет доступен и moreutils устанавливается без ошибок.

+958
Canavan Neeson 03 февр. '09 в 4:24

Этот вид контроля над подходящих файлов вне зоны комфорта смол. Правила для сопоставления файлов ограничивается простой матчей за имена.

найти один способ, но поскольку у вас есть ЗШ, у вас это легче:

тар-БФ "в$Home/$ФАЙЛ_РЕЗЕРВНОЙ_КОПИИ" --автоматическ-сжатия .*(.)

Что . в скобках в конце подстановки выражения является Глоб спецификатор , который говорит: “только обычные файлы”.

Символические ссылки на файлы не совпадают. Если вы изменить .*(-.), они будут включены, но файл не в архиве, если он также входит. Если вы хотите заменить символическую ссылку на свои цели, сделать это .*(-.:А):это добавляет истории расширения производства модификатора , которая решает все символические ссылки на такой путь, который не использует символические ссылки.

+943
user1366367 10 июн. 2018 г., 22:02:30
Другие ответы

Связанные вопросы


Похожие вопросы

Я использую ниже порядке:

[корень@имя localhost /]# ням установить -г в MySQL в MySQL-серверу MySQL-Devel, который

для установки в MySQL.

После установки хочу запустить MySQL с:

[корень@имя localhost /]# /и т. д./init.д/тузды начать
-баш: в /etc/инит.д/тузды: нет файла или каталога

Но вы видите, я не могу запустить его таким образом.

Итак, я использую:

найти / -имя тузды 

чтобы найти тузды, я получаю:

[корень@имя localhost /]# найти / -имя тузды 
в /usr/IP-адресов/тузды

Итак, я использую:

в /usr/IP-адресов/тузды начать 

чтобы запустить MySQL, но получаю ошибку:

[корень@имя localhost /]# /usr и/IP-адресов/тузды начать
2017-05-19 14:28:17 139762539387072 [предупреждение] параметр 'open_files_limit': значение без знака 18446744073709551615 доводят до 4294967295
2017-05-19 14:28:17 139762539387072 [Примечание] в /usr/IP-адресов/тузды (тузды 10.1.20-MariaDB в) начинается процесс 82223 ...
2017-05-19 14:28:17 139762539387072 [предупреждение] не удалось увеличить количество max_open_files более чем 1024 (запросу: 5035)
2017-05-19 14:28:17 139762539387072 [ошибка] WSREP: rsync и ССТ метод требует wsrep_cluster_address быть настроен на запуск.



И застряли здесь.

Кто-то знает как решить это?

+935
confusedStudent 18 сент. 2013 г., 00:01:32

Я использую ОС UNIX скрипт команду, чтобы записать все, что поступает на терминал и поместить его в файл журнала. но когда я вижу записанный файл, она также включает нежелательной характер.

Так как запись действия терминала без ненужных символов.

Пример Вывода : enter image description here

Я пытался конвертировать файл в DOS с помощью Тодос, ВИМ и также попытался с dos2unix но его пропуска файл dos2unix: пропуск двоичный файл.

+858
Ambrose Ashley 11 нояб. 2018 г., 17:18:04

Я пытаюсь открыть один последовательный порт (на/dev/ttyACM0) на мой Rasbperry с двух скриптов Python, которые явно не работают, потому что один блокирует другой. Дело в том, что один скрипт нужен только для чтения из последовательного порта, а другой только пишет он. Я не могу объединить два скрипта, потому что писать-скрипт получает только каждый так часто выполняется, чтобы отправить несколько команд, и чтения, сценарий должен войти случайные сообщения с другого устройства (значит нужно слушать все время).

Serial Communication

Я пытался писать в третьем Питоне программу, которая выступала в качестве посредника между скриптами и один последовательный порт. Это accomendate последовательного порта и записи данных, поступающих от устройства для виртуального порта (например, /dev/ttyACM0_read), из которой скрипт будет читать. Запись-сценарий будет писать на второй виртуальный порт (например, /dev/ttyACM0_write), от где реле программа считывает данные и записывает его в последовательный порт. Это не удалось , когда я не смог создать виртуальные порты ("не удалось открыть порт, нет такого файла или каталога"). Запросы на создание виртуальных последовательных портов воспитали ничего полезного.

Во время поисков я наткнулся на сокат, но я не мог понять, если бы это была какая-то польза в данном случае, так как он (насколько я понял) можно только создать соединение между двумя портами.

Так что, возможно, кто-то может сказать мне, как создать виртуальный порт, поэтому я могу использовать его с моей программой реле Python или придумывает другое решение на один порт-два-скрипты-дилемма я.

Платформа информация: Линукс armv6l стрейч В9


Обновление: Чтобы прояснить мой usecase, здесь представлены скрипты Python я использую:

написать скрипт - при вызове URL-адрес (имя хоста.местные/ФОО)на Raspberry, последовательный порт открыл кратко и команда "отправить".

импорт веб
импорт серийный

URL-адреса = (
 'в/Foo', 'фу',
)

класс Foo:
 деф сделать(самовыдвижение):
 сир = серийный.Серийный ('файл/dev/ttyACM0', 9600, тайм-аут=1)
сер.писать("<311>")
сер.закрыть()
 возвращение "успех"

если __имя__ == "__основной__":
 приложение = веб.применения(URL-адреса, глобальные())
приложение.работать()

читать-сценарий - ловит входящие данные из последовательного порта и записывает его в файл.

импорт серийный

сир = серийный.Серийный ('файл/dev/ttyACM0', 9600, тайм-аут=1)

в то время как 1
 #Если серийные данные, записать его в txt файл

сер.закрыть()

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

Как @meuh указал в комментариях, отключение монопольного режима на порт будет работать, но я не смог добиться, что с помощью помощью setserial:

Пи@pizero:~ $ помощью setserial на /dev/ttyACM0 ^session_lockout
Не могу установить последовательную информация: операция не поддерживается
Пи@pizero:~ $ судо помощью setserial на /dev/ttyACM0 ^session_lockout
Пи@pizero:~ $ 

После этого ничего не изменилось и второй скрипт Python возвращенные EBUSY (устройство или ресурс занят), как и раньше.

+734
user5697034 29 сент. 2017 г., 00:55:38

~/.screenrc - это пользовательский файл конфигурации для GNU на экране. Вы можете найти более подробную информацию в руководство пользователя.

+731
An Na 2 нояб. 2015 г., 16:23:43

я хочу быть в состоянии предотвратить людей от случайного удаления критических файлов системы у меня свой сценарий, кто-нибудь знает, как использовать инструкцию, чтобы найти, если владельцем папки?

+704
AuroraNo 27 сент. 2019 г., 09:07:57

Я считаю, что исходный код не существует в одном пакете/снимок.

Есть скрипты от https://eewiki.net/display/linuxonarm/BeagleBone+черный . Скрипт вытягивает код в три шага:

Когда все эти шаги сделаны, создавать теги script и нарушает кодекс.

+546
Juliano Grams 12 июн. 2014 г., 17:06:20
...
# CD /медиа/корень
# МВ /корень /пользователя root

Упс?! Возможно, вы имели в виду, чтобы сделать это вместо:

корень # МВ пользователя root

Если не опечатка в вашем вопросе, что, вероятно, причина, почему вы впоследствии найти /медиа/корень/корень уже существует. Вы никогда не двигалась в его сторону!

+515
user18682 15 дек. 2014 г., 18:04:47

К сожалению, два варианта предложено в другой ответ были несовершенны. offlineimap был довольно глючный и в лучшие времена. Например, нет никакого способа, чтобы автоматически запустить скрипт после получении новой почты. тестеров не синхронизировать в обоих направлениях.

Вместо этого, решение, которое я использовал сочетание imapnotify и плагин isync. Я настроен imapnotify чтобы запустить сценарий, когда Новая почта срабатывает (через ожидания).

Этот скрипт работает mbsync "${канал}:почтовый" в зависимости от учетной записи электронной почты. Далее он работает намного нового. Наконец, он записывает количество непрочитанных писем в файл, как показано ниже. Содержимое этого файла отображается на панели моего окружения рабочего стола.

mail_count_file="/дома/Foo/.кэш/new_mail_count"
new_count=$(найти ~/.почты/*/почтовый/нов-тип F | туалет -л)
если [[ $new_count > 0 ]]; затем
 Эхо $new_count > "$mail_count_file"
еще
 если [[ -Ф "$mail_count_file" ]]; затем
 РМ "$mail_count_file"
интернет
интернет

Обновление

imapnotify (nodejs-imapnotify) регулярно отключается без предупреждений/ошибок, и часто скучает по Новой почте. питон-imapnotify также работает с перебоями. Однако, goimapnotify работает очень хорошо в моем опыте. Она редко выпадает, и когда это произойдет (например из-за разъединения сети и/или приостановить циклов), он быстро перезагружается сам по себе без суеты.

+477
Farshad Nahangi 1 июн. 2013 г., 02:01:24

Предложение #1

Я не думаю, что вы можете запускать в xterm такой с оборотов, когда быть установлены под другой идентификатор пользователя (корень), чем использовать тот владеет рабочего стола.

Для этого, как минимум, нужно выполнить команду xhost + на основном рабочем столе, как ваше имя пользователя, а затем обязательно установите $дисплей переменной окружения в том, что звонок в xterm. Нечто подобное может работать:

старпома дисплей=:0.0 $в xterm .....

Я думаю, что в xterm можно также взять -дисплей переключатель, чтобы сделать нечто подобное, но у меня нет его под рукой на данный момент.

Предложение #2

Если вы столкнулись с "экзек-T-это недопустимый вариант", то я подозреваю, что переменная $в xterm, будет сброшен в результате чего команда старпома -название ... исполняются, и не.

Пример
$ Exec и название "мля" -е "Баш"
Баш: старпома: -Т: недопустимый параметр
старпома: использование: метод exec [СL] [имя] [команда [аргументы ...]] [перенаправление ...]

Однако, когда я поставил $в xterm и попробуйте, это работает:

$ В xterm=в xterm
$ старпома $в xterm -название "бла-бла" - е "Баш"

                 ss#1

+444
Brandon Chandler 5 февр. 2014 г., 21:11:38

Я видел настройки по умолчанию в конфиге сделать так:

да " | сделать конфиг

да петли вечно печатать все свои аргументы, разделенные пробелами, и следует за ними с '\п'. Если нет аргументов приведи, он печатает 'г' с последующим переводом строки каждой итерации. Вот, мы дали ему пустой аргумент, чтобы заставить его просто напечатать символ новой строки, который, как нажать клавишу Enter, чтобы принять все значения по умолчанию из от сделать конфиг подсказок.

+426
DanialAbdi 18 янв. 2012 г., 00:02:16

Я пишу приложение, которое передает показания с датчиков температуры процессора и скорости вращения вентилятора монитора. Однако, согласно документации Intel на выступает, необходимые инструкции должны выполняться в режиме кольца 0, т. е. в режиме ядра, или исключение выдается.

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

+405
Milos Dimic 8 янв. 2016 г., 05:27:22

Я хочу установить определенную версию, которая не доступна из apt-получить полезности, но доступно https://packages.debian.org (как https://packages.debian.org/wheezy-backports/exfat-fuse например)

Как я должен поступить и какие риски?

Собирает пакет источник единственный способ?

+394
Terri Tyree 11 мар. 2015 г., 23:14:52

Я просто собрал себе новый компьютер с очень новой материнской платы, поддерживающей процессоры Intel кабы озеро. Данная материнская плата имеет Реалтек ALC1220 (S1220A) набор микросхем для аудио. После установки Линукс Минт 18.1, я, к сожалению, заметил, что звук не работает. Нет звуковая карта обнаруживается на все, что я попробовать. Настройки звука просто показывает муляж устройства.

пользователь@Линукс-Минт ~ $ игре -л
 игре: device_list:268: без звуковых карт нашел...

пользователь@Линукс-Минт ~ $ команду lspci -КНН | грэп -я -А4 аудио
 00:1Ф.3 аудио устройств [0403]: Intel корпорация устройстве [8086:a2f0]
 Подсистемы: Asustek В Компьютер Инк. Устройство [1043:8723]
 Драйвер ядра В использовать: snd_hda_intel
 Модули ядра: snd_hda_intel
 00:1Ф.4 шины SMBus [0c05]: корпорация Intel устройства [8086:a2a3]

Материнская плата: ASUS Рог Стрикс H270I игр
Аудио чипсет: рога звуковая карта SupremeFX 8-канальный высокой четкости Аудио кодек S1220A
Дистром Линукса: Линукс Минт 18.1
Текущего Ядра: 4.11.6

Что я пробовал?

По данным https://bbs.archlinux.org/viewtopic.php?id=226579 и Реалтек S1220A под Линукс Минт 18.1 поддержка S1220A чипсет был введен в ядро Linux 4.11. Линукс Минт 18.1 поставляется с ядром 4.4, но есть возможность обновления до ядра 4.9 через Менеджер обновлений. Однако, делать это и после переустановки все алса вещи не имели никакого эффекта, до сих пор не установлено звуковое устройство не обнаружено. Тогда я решил установить ядро 4.11.6 используя UKUU. Установка вроде бы завершается без ошибок, и после обновления жратва моя система загружается Минт с новым ядром:

пользователь@Линукс-Минт ~ $ uname-Р
4.11.6-041106-универсальный

Есть также сообщения о людях, кто получил чипсет аудио ALC1220 работает на ядре 4.9.

Я также основывает некоторые намеки на то, что это может быть связано с настройки UEFI. Не специалист в этом, я попытался отключить UEFI и совместимости / старые параметры перед загрузкой моей системе, однако, все это не кажется, чтобы иметь любой эффект.

У кого-нибудь есть какие-либо улики, как я могу получить звук на Линукс Минт с этим чипсетом?

Обновление 1:

команда dmesg | grep в СНД возвращает следующее:

[ 4.951807] snd_hda_intel 0000:00:1Ф.3: включение устройства (0000 -> 0002)
[ 4.951966] snd_hda_intel 0000:00:1Ф.3: граница 0000:00:02.0 (ОПС i915_audio_component_bind_ops [i915])
[ 5.079301] snd_hda_intel 0000:00:1Ф.3: Корб сбросить тайм-аут#1, CORBRP = 0
[ 5.080811] snd_hda_intel 0000:00:1Ф.3: нет кодеки нашли!

Обновление 2:

Вслед за @dirkt советую проверить probe_mask, я пробовал:

судо команды modprobe -Р snd_hda_intel
судо команды modprobe snd_hda_intel probe_mask=0x1ff

Затем проверяю dmesg, в это не выглядит как что-то меняется:

[ 374.653091] snd_hda_intel 0000:00:1Ф.3: codec_mask вынужден до 0xFF
[ 374.653126] snd_hda_intel 0000:00:1Ф.3: граница 0000:00:02.0 (ОПС i915_audio_component_bind_ops [i915])
[ 374.763149] snd_hda_intel 0000:00:1Ф.3: Корб сбросить тайм-аут#1, CORBRP = 0
[ 374.764764] snd_hda_intel 0000:00:1Ф.3: нет кодеки нашли!
+318
Fatima Shahid 4 июл. 2018 г., 22:19:57

Так как вы только ожидали (и предоставлении) три каталога до параметр возраст, не петли без разбора; вместо этого, явно цикла:

для dir в 1 2 3; сделать
 # работа с "$1"
сдвиг
сделано

или остановить цикл, когда остается один параметр:

а [ "$#" -ГТ 1 ]; делать
 Эхо "работает с $1"
сдвиг;
сделано

После "дней" параметр подается в течение каждой смены, вам потребуется сохранить его изначально выключен:

дней=$4

... перед вызовом цикла.

... и если вы позволяете на произвольное количество каталогов, которые должны быть переданы:

[ "$#" -ГТ 1 ] || выход 1
дней=${@: -1}
а [ "$#" -ГТ 1 ]; делать
 Эхо-работа с "1 $" и "$дней"
сдвиг
сделано

При этом используется Баш массив [email protected] и просит последний элемент (обозначается -1, разделенных пробелом, чтобы предотвратить интерпретируется как модификатор :); затем он перебирает один за другим параметры, пока что остался только один (начальный 'день' параметр в конце).

+314
1krep 29 дек. 2012 г., 16:48:29

Или вы можете добавить в$PATH в конце второй путь Как это:

PATH=/usr/local/opt/ruby193/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:$PATH
+311
Sam Cao 15 мар. 2012 г., 21:39:15

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

дю-НС | хвоста -Н 1

Структура 2ГБ каталоге занимает более секунды для полного списка, но меньше, чем 5, что с этой формой.

+283
flinmax 26 мая 2019 г., 15:53:10

С VESA не поддерживает двойной дисплей. Необходимо запустить X с родными драйверами, в данном случае компанией Intel.

Корпорация Intel поддерживают двойной головкой для многих досках. Вы можете достичь двойной головкой либо расширения xrandr (временное) или файл xorg конфигурации (перезагрузка-постоянные).

Прочитать это. Intel была документирована очень хорошо о двойной головкой установки

+215
Debleena Bose 19 июн. 2017 г., 15:28:59

Если по UUCP установлен в системе, вы можете использовать команду ТС, например

 $ КР -л на /dev/ttyS0 -с 9600
+150
Mateva 6 мая 2011 г., 14:41:30

Введите команду sudo apt-получить установку в IW , IW-это утилита, которая может управлять беспроводными устройствами и их настройками. После установки типа ВРС список , он будет распечатать список, по поддерживает режимы интерфейса : если вы видите АП, то это означает, что он поддерживает. Для выяснения, что быстрее можно ввести в IW список | грэп АП

+105
atkinsophrie 25 мая 2016 г., 13:29:36

Формат вы используете для вашего crontab-файл-это файл/etc/cron-а.д формате. При использовании кронтаб -Е для редактирования файл crontab, имя пользователя не указано. Пользователь используется для выполнения задания-это пользователь, который бежал кронтаб -е.

В основном, изменения в это:

0 */4 * * * /УСР/бин/rsnapshot часам
30 3 * * * /УСР/бин/rsnapshot ежедневно
0 3 * * 1 /УСР/бин/rsnapshot еженедельно
30 2 1 * * /УСР/бин/rsnapshot ежемесячно
+87
Lemonade 18 дек. 2015 г., 06:58:36

Вы можете использовать ключам для преобразования из двоичных и ASCII.

$ Эхо -н "а" | команда xxd-б
0000000: 01000001 в

$ Эхо -н "а" | команда xxd-б | у awk '{печати $2}'
01000001

Преобразование баз

Если вы хотите делать только базовые преобразования между шестнадцатеричной, восьмеричной, и декабря я обычно использую обычный калькулятор командной строки (Британская Колумбия), чтобы делать такие вещи. Отметим, что БК - это всегда очень требователен к правильной последовательности оснований: вы должны указать полученную базу (obase) во-первых, затем добавить свой выбор сайт iBase.

$ Эхо "obase=2; Сайт iBase=16; В" | до н. э.
1010

$ Эхо "obase=16; сайт iBase=2; 1010" | до н. э.
А
+44
LBD 22 окт. 2010 г., 00:32:54

В ТР утилита может быть использована, чтобы заменить каждый пробел на символ новой строки Вот так:

тр '' '\п' <входной_файл >выходной_файл

Если есть несколько пробелов между именами на линии, вы можете сжать сгенерированных строк в один из них через тр -ы.

Это, очевидно, предполагает, что ни один из файлов, содержащих внедренные пробелы.

Вы также можете достичь того же повлиять с СЭД:

СЭД 'г/ /\н/' входной_файл >выходной_файл
+26
seadays 16 июл. 2010 г., 15:02:30

Можно использовать сочетание GNU stdbuf и пописать от moreutils:

Echo "Привет мир!" | stdbuf -о 1М пописать cmd1 cmd2 cmd3 > выход

пописать к popen(3)с этих 3 оболочки командной строки и затем fread операционнойс входным и fwriteс ней все три, которые будут буферизованы до 1м.

Идея в том, чтобы иметь буфер как минимум на входе. Таким образом, даже несмотря на три команды запускаются одновременно, они видят только входные данные, поступающие в когда писаю pcloseс три команды последовательно.

На каждом pclose, пописать сбрасывает буфер в команду и ожидает его завершения. Что гарантирует, что до тех пор, пока cmdx команды не начать выводить что-нибудь прежде они получили любой вход (а не вилкой процесса, которые могут продолжить вывод после того, как их родитель вернулся), выход трех команд не будет чередоваться.

По сути, это немного, как, используя временный файл в памяти, с тем недостатком, что 3 команды запускаются одновременно.

Чтобы избежать выполнения команд одновременно, вы могли бы написать писают в раковины функции:

пописать() (
 вход=$(кошка; Эхо .)
 для меня делать
 е %с "${ввод%}". | функции eval "$я"
сделано
)
Echo "Привет мир!" | пописать cmd1 cmd2 cmd3 > из

Но помните, что снаряды другие, чем ЗШ не на двоичный вход с символ Nul.

Чтобы избежать, используя временные файлы, но это означает, что весь ввод хранится в памяти.

В любом случае, вам придется где-то хранить входные данные, в памяти или временных файлов.

На самом деле, это довольно интересный вопрос, так как он показывает нам предел идею Unix и иметь несколько простых инструментов сотрудничать на одной задаче.

Здесь мы хотели бы иметь несколько инструментов сотрудничать на задач:

  • источник команды (тут Эхо)
  • диспетчер команды (тройник)
  • некоторые фильтр команд (cmd1, cmd2, cmd3)
  • и совокупность команд (кошка).

Было бы неплохо, если бы все они могли работать одновременно и выполнять свою нелегкую работу на данных, которые они предназначены, чтобы процесс, как только это доступно.

В случае с одной командой фильтр, это легко:

в src | тройник | cmd1 | кошки

Все команды выполняются одновременно, cmd1 начинает жевать данных из РКЦ , как только она доступна.

Теперь, с тремя командами фильтра, мы все еще можем сделать то же самое: начать их параллельно и соединить их с трубами:

┏━━━┓▁▁▁▁▁▁▁▁▁▁┏━━━━┓▁▁▁▁▁▁▁▁▁▁┏━━━┓
 ┃ ┃░░░░2░░░░░┃cmd1┃░░░░░5░░░░┃ ┃
 ┃ ┃▔▔▔▔▔▔▔▔▔▔┗━━━━┛▔▔▔▔▔▔▔▔▔▔┃ ┃
┏━━━┓▁▁▁▁▁▁▁▁▁▁┃ ┃▁▁▁▁▁▁▁▁▁▁┏━━━━┓▁▁▁▁▁▁▁▁▁▁┃ ┃▁▁▁▁▁▁▁▁▁┏━━━┓
┃ГРЦ┃░░░░1░░░░░┃тройник┃░░░░3░░░░░┃cmd2┃░░░░░6░░░░┃кошка┃░░░░░░░░░┃из┃
┗━━━┛▔▔▔▔▔▔▔▔▔▔┃ ┃▔▔▔▔▔▔▔▔▔▔┗━━━━┛▔▔▔▔▔▔▔▔▔▔┃ ┃▔▔▔▔▔▔▔▔▔┗━━━┛
 ┃ ┃▁▁▁▁▁▁▁▁▁▁┏━━━━┓▁▁▁▁▁▁▁▁▁▁┃ ┃
 ┃ ┃░░░░4░░░░░┃cmd3┃░░░░░7░░░░┃ ┃
┗━━━┛▔▔▔▔▔▔▔▔▔▔┗━━━━┛▔▔▔▔▔▔▔▔▔▔┗━━━┛

Что мы можем сделать относительно легко с помощью именованных каналов:

пописать() (
 mkfifo тройник-тройник cmd1-cmd2 тройник-cmd3 cmd1-кошка cmd2-кошка cmd3-кошка
 { тройник тройник тройник cmd1-cmd2 тройник-cmd3 > /dev/нуль <&3 3<&- & } 3<&0
 оценку "1 $ < тройник-cmd1 1<> cmd1-кошка &"
 оценку "2 $ < тройник-cmd2 1<> cmd2-кошка &"
 оценку "3 $ < тройник-cmd3 1<> cmd3-кошка &"
 старпома кошка cmd1-кошка cmd2-кошка cmd3-кошка
)
Эхо АВС | Пи 'тр A' и 'тр б б' 'тр ц с'

(выше } 3<&0 , чтобы обойти тот факт, что & перенаправляет вывод из /dev/нуль, и мы используем <> , чтобы избежать открытия труб, чтобы блокировать до тех пор, пока другой конец (кот) был открыт так же)

Или, чтобы избежать именованных каналов, немного более тягостно с ЗШ coproc:

пописать() (
 n=0 и Ки= Ко= это=() ОС=()
 КМД делать
 ивала "coproc $КМД $ИЦ $ко"

 старпома {я}<&П {О}>&П
 это+=($я) ОС+=($о)
 ивал я$п=$я о$п=$о.
 сі+=" {я$н}<&-" со+=" {о'Н}>&-"
((Н++))
сделано
 coproc :
 читать -п
 ивала тройник в /dev/ФД/$^ОС $ки "> /dev/нуль &" исполнительная кот /Дева/ФД/$^составляет $ко
)
Эхо АВС | Пи 'тр A' и 'тр б б' 'тр ц с'

Теперь вопрос: когда все программы запущены и подключены, будет ли поток данных?

У нас есть два ограничения:

  • тройник для всех его выходы с той же скоростью, поэтому он может только направить данные на скорости самой медленной выходной трубы.
  • кошка только начала читать со второй трубы (трубы 6 на чертеже выше), когда все данные считаны из первого (5).

Это означает, что данные будут не течь в трубе 6 до cmd1 закончил. И, как в случае с ТР б б выше, это может означать, что данные не поток в трубе 3, Что означает, что он не будет течь в любых трубах 2, 3 или 4 с тройник для в самом медленном темпе все 3.

На практике эти трубы имеют ненулевой размер, поэтому некоторые данные удастся пройти, и на моей системе по крайней мере, я могу заставить его работать до:

да АВС | глава -З. $((2 * 65536 + 8192)) | Пи 'тр A' и 'тр б б' 'тр ч ч' | уник -с-с

Кроме того, с

да АВС | глава -З. $((2 * 65536 + 8192 + 1)) | пописать 'тр A' и 'тр б б' 'тр ч ч' | уник -с

Мы в тупике, где мы оказались в этой ситуации:

┏━━━┓▁▁▁▁2▁▁▁▁▁┏━━━━┓▁▁▁▁▁5▁▁▁▁┏━━━┓
 ┃ ┃░░░░░░░░░░┃cmd1┃░░░░░░░░░░┃ ┃
 ┃ ┃▔▔▔▔▔▔▔▔▔▔┗━━━━┛▔▔▔▔▔▔▔▔▔▔┃ ┃
┏━━━┓▁▁▁▁1▁▁▁▁▁┃ ┃▁▁▁▁3▁▁▁▁▁┏━━━━┓▁▁▁▁▁6▁▁▁▁┃ ┃▁▁▁▁▁▁▁▁▁┏━━━┓
┃ГРЦ┃██████████┃тройник┃██████████┃cmd2┃██████████┃кошка┃░░░░░░░░░┃из┃
┗━━━┛▔▔▔▔▔▔▔▔▔▔┃ ┃▔▔▔▔▔▔▔▔▔▔┗━━━━┛▔▔▔▔▔▔▔▔▔▔┃ ┃▔▔▔▔▔▔▔▔▔┗━━━┛
 ┃ ┃▁▁▁▁4▁▁▁▁▁┏━━━━┓▁▁▁▁▁7▁▁▁▁┃ ┃
 ┃ ┃██████████┃cmd3┃██████████┃ ┃
┗━━━┛▔▔▔▔▔▔▔▔▔▔┗━━━━┛▔▔▔▔▔▔▔▔▔▔┗━━━┛

Мы заполнили труб 3 и 6 (64kiB каждого). тройник читала, что дополнительный байт, он накормил им cmd1, но

  • он сейчас блокирован пишу на трубе 3, так как он ждет cmd2 , чтобы очистить его
  • cmd2 не могут освободить его, потому что он заблокирован пишу на трубе 6, жду кота , чтобы очистить его
  • кошки не могут освободить его, потому что он ждет, пока нет больше ввод на трубу 5.
  • cmd1 не могу сказать кота нет больше входного, потому что он ждет себя больше информации от тройника.
  • и тройник не могу сказать cmd1 нет больше входного, потому что он заблокирован... и так далее.

У нас есть цикл зависимости и тем самым в тупик.

Теперь, какое решение? Больше труб 3 и 4 (достаточно большой, чтобы содержать все в src'ы выходной) сделал бы это. Мы могли бы сделать это, например, вставка ПВ-дь 1г между тройник и cmd2/3 , где ПВ может хранить до 1 Гб данных ждет cmd2 и cmd3 , чтобы прочитать их. Что бы означать две вещи:

  1. это использование потенциально много памяти, и, кроме того, дублируя его
  2. это не у всех 3 команд сотрудничать, потому что cmd2 будет в реальности только начинают обрабатывать данные, когда cmd1 закончил.

Решение второй проблемы было бы сделать трубы 6 и 7 больше, а также. Предполагая, что cmd2 и cmd3 производить столько продукции, сколько они потребляют, что бы не потреблять больше памяти.

Единственный способ избежать дублирования данных (в первой задаче) будет осуществлять хранение данных в диспетчерскую себя, то есть реализовать вариация на тройник , которые могут передавать данные по курсу быстрый выход (удерживание данных на корм медленнее, одни в своем собственном темпе). Не совсем тривиально.

Так, в конце концов, лучшее, что мы можем разумно сделать без программирования-это, наверное, как-то так (синтаксис ЗШ):

max_hold=1г
пописать() (
 n=0 и Ки= Ко= это=() ОС=()
 КМД делать
 если ((н)); тогда
 ивала "coproc ПВ-дь $max_hold $ИЦ $со | $cmd и $ИЦ $со | ПВ-дь $max_hold $ки $ко"
еще
 ивала "coproc $КМД $ИЦ $ко"
интернет

 старпома {я}<&П {О}>&П
 это+=($я) ОС+=($о)
 ивал я$п=$я о$п=$о.
 сі+=" {я$н}<&-" со+=" {о'Н}>&-"
((Н++))
сделано
 coproc :
 читать -п
 ивала тройник в /dev/ФД/$^ОС $ки "> /dev/нуль &" исполнительная кот /Дева/ФД/$^составляет $ко
)
да АВС | руководитель -Н 1000000 | Пи 'тр A' и 'тр б б' 'тр ч ч' | уник -с
+22
TheBlackKoala 23 янв. 2014 г., 14:21:19

Показать вопросы с тегом

$200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil $200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil blue chew viagra scam buy viagra buy viagra online buy viagra online canada pharmacy buy viagra online without script canada pharmacy viagra generic canadian pharcharmy online viagra canadian viagra canadian viagra without a doctor prescription cheap viagra cialis vs viagra cost of viagra female viagra female viagra pills free viagra free viagra samples generic viagra generic viagra 100mg generic viagra available generic viagra canada price generic viagra online pharmacy generic viagra sildenafil citrate generic viagra without a doctor prescription herbal viagra how does viagra work how long does viagra last how much does viagra cost how to take viagra for maximum effect i took viagra mom levitra vs viagra mom gives son viagra natural viagra natural viagra alternatives that work natural viagra substitute nizagara 100 mg vs viagra online viagra online viagra without subscription over the counter viagra real life viagra demonstration revatio vs viagra side effects of viagra sildenafil sildenafil 100mg sildenafil 20 mg sildenafil 20 mg tablet sildenafil 20 mg tablet vs viagra sildenafil citrate sildenafil citrate 100mg sildenafil citrate 20 mg sildenafil coupons sildenafil dosage sildenafil dosage recommendations sildenafil generic sildenafil side effects sophia viagra sophia viagra bikini sophia viagra hot stendra vs viagra stepmom gives son viagra viagra viagra 100mg viagra before after photo actual viagra boner viagra canada online pharmacy viagra coupon viagra coupons viagra coupons from pfizer viagra dosage viagra dosage recommendations viagra erection viagra erection after ejaculation viagra for men viagra for sale viagra for sale on amazon viagra for women viagra generic viagra generic availability viagra generic release date viagra in action viagra on line viagra online viagra online canada pharmacy viagra online pharmacy viagra patent expiration viagra pill viagra pills viagra porn viagra prank viagra prices viagra samples viagra sex viagra side effects viagra substitute viagra vs cialis viagra without a doctor prescription viagra without doctor prescription what is viagra when will generic viagra be available blue chew viagra scam buy viagra buy viagra online buy viagra online canada pharmacy buy viagra online without script canada pharmacy viagra generic canadian pharcharmy online viagra canadian viagra canadian viagra without a doctor prescription cheap viagra cialis vs viagra cost of viagra female viagra female viagra pills free viagra free viagra samples generic viagra generic viagra 100mg generic viagra available generic viagra canada price generic viagra online pharmacy generic viagra sildenafil citrate generic viagra without a doctor prescription herbal viagra how does viagra work how long does viagra last how much does viagra cost how to take viagra for maximum effect i took viagra mom levitra vs viagra mom gives son viagra natural viagra natural viagra alternatives that work natural viagra substitute nizagara 100 mg vs viagra online viagra online viagra without subscription over the counter viagra real life viagra demonstration revatio vs viagra side effects of viagra sildenafil sildenafil 100mg sildenafil 20 mg sildenafil 20 mg tablet sildenafil 20 mg tablet vs viagra sildenafil citrate sildenafil citrate 100mg sildenafil citrate 20 mg sildenafil coupons sildenafil dosage sildenafil dosage recommendations sildenafil generic sildenafil side effects sophia viagra sophia viagra bikini sophia viagra hot stendra vs viagra stepmom gives son viagra viagra viagra 100mg viagra before after photo actual viagra boner viagra canada online pharmacy viagra coupon viagra coupons viagra coupons from pfizer viagra dosage viagra dosage recommendations viagra erection viagra erection after ejaculation viagra for men viagra for sale viagra for sale on amazon viagra for women viagra generic viagra generic availability viagra generic release date viagra in action viagra on line viagra online viagra online canada pharmacy viagra online pharmacy viagra patent expiration viagra pill viagra pills viagra porn viagra prank viagra prices viagra samples viagra sex viagra side effects viagra substitute viagra vs cialis viagra without a doctor prescription viagra without doctor prescription what is viagra when will generic viagra be available $200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil