Не вижу "Посланник" - рассказы посланник

Есть программа под названием ремонте, что вы записать на загрузочный компакт-диск и вставить в дисковод и загрузиться с USB на Mac....работает на Intel Маках... еще не пробовали его на процессор PowerPC.. я думаю, что это не так, но здесь может быть другое решение:

http://ubuntuforums.org/showthread.php?t=780320

+415
Alallana 19 июн. 2020 г., 13:18:31
16 ответов

Для & (или почти любой другой персонаж, у вас есть две простые возможности.

  • Положить одинарные кавычки вокруг всего этого: ' -3ab_&_-3dc.ИМГ'
  • Ставить обратный слеш перед каждой хлопотно характера: -3ab_\&_-3dc.ИМГ

Есть два исключения:

  • Единственный способ цитата не работает на одну цитату. Обратного слеша не является особенной в одинарные кавычки, так что вы не можете напрямую использовать что либо. Что вы можете сделать, это закончить строка с одинарными кавычками, сразу же использовать обратную косую черту плюс одинарную кавычку, и перезапустить одну цитату. Так, например, если имя каталога фу кельбар\qux: компакт-диск с 'Foo'\"бар\qux'. Вы можете помнить его таким образом: внутри одинарных кавычек, '\" получает одну цитату.
  • Метод обратного слеша не работает для строк: обратный слеш-новая строка просто игнорируется. Вам нужно положить одинарные кавычки вокруг строки.

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

Есть дополнительная трудность здесь заключается в том, что имя каталога начинается с черточки. Этот символ указывает на CD команду (как и почти все команды), что параметр выглядит следующим образом. Тире не спец к корпусу, только на команду, поэтому котировки не влияют на него. У вас есть два способа передачи аргумента, которая начинается с черточки на команду без его трактовать как вариант:

  • Найдите другой способ выразить этот аргумент. Для имени файла, добавления ./ впереди по-прежнему обозначает один и тот же файл.
  • Положите аргумент -- раньше. Что говорит команда прекратить искать варианты.

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

компакт-диск -- '-3ab_&_-3dc.ИМГ'
компакт-диск -- -3ab_\&_-3dc.ИМГ
кд ./-3ab_\&_-3dc.ИМГ
компакт-диск './-3ab_&_-3dc.ИМГ'
+971
jnooning 03 февр. '09 в 4:24

Это лечится только хирургически. это заболевание имеет высокую летальность. Торакотомия может быть спасительный вариант, если другие действия не http://www.trauma.org/archive/thoracic/CHESTtension.html

+968
Wangsu 14 февр. 2018 г., 02:10:28
Другие ответы

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


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

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

Около 30% сахара-это типичный пропорцию - не стесняйтесь экспериментировать. т. е. смесь 300г сахара с достаточным количеством воды и ароматизатора на 1 л смешанного раствора. При использовании соков, подсчитать, сколько сахара они способствуют с этикетки информацию и добавить достаточно сахара, чтобы достичь 30%

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

+921
Tom Herman 30 июн. 2017 г., 11:04:06

Очень может быть, что две штуки не идут вместе. Патентом называют это количество 625702, для эмалированная жаровня с купольной крышкой. (Это своего рода трудно сказать, но я думаю, что инновации, которые заявлены-это выступ/отступ, что позволяет ручке крепиться, не повреждая эмаль.)

diagram from the patent

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

+863
Dries 17 мар. 2021 г., 00:39:26

Я представляю мой вопрос с помощью Docker контейнеров, но этот пример идет в разрез с остальным проблема. В действительности любую программу, которая позволяет использовать мост интерфейсы и СШ будет делать.

Я использую докер контейнер, который запускает демон демон в фоновом режиме, которая породила supervisord , который работает на переднем плане. Я в основном использовать SSH, чтобы иметь безопасный способ Х11-экспедиторские без необходимости монтирования в/tmp/.Для X11-Unix и может в контейнер и полностью обнажив гнездо в контейнере. Если я использую докер топ из имя_контейнера сразу после того, как я начал контейнера, я получаю следующий вывод:

ЖИДКОСТИ С ПИД ИДЕНТИФИКАТОР В СТИМЕ ТЕЛЕТАЙП ВРЕМЕНИ УМК
корень 4732 535 1 19:56 ? 00:00:00 /usr/Бен/Python в /usr/Бен/supervisord
корень 4745 4732 0 19:56 ? 00:00:00 /ЕГР на/sbin/sshd для

которое, как ожидалось. Теперь, я выставил порт 22 на контейнере в порт 5000 на хозяина. Следовательно, я могу войти в свой контейнер с помощью СШ-х имя_пользователя@имя localhost -п 5000. Я знаю, как СШ работает, когда клиент и хост разных компьютеров и в разных сетях, но у меня есть несколько вопросов, когда клиент и хост один и тот же компьютер (в моем случае клиент-это моя нормальная машина и хозяин контейнера на моей нормальной машины). Я знаю, что Docker создает мост между физической сетью устройств на нормальную машину и виртуальных сетевых устройств на моем компьютере.

  1. Но как же моя нормальная машина и контейнер'communicate друг с другом? Они используют IP-адреса, присвоенные им на устройство моста и общаться через них?

  2. Как порты вовлечены в этот процесс, они избавляются от необходимости использовать IP-адреса?

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

Обширный поиск в Интернете не выявил достаточно ответов. Это, как говорится Я, конечно, не будет утверждать, что такого сайта не существует!

+792
Zaxiez 5 мар. 2020 г., 11:25:34

WhatsApp является создание дубликатов контактов на моем телефоне Android. Я знаю, что дубликаты относятся к WhatsApp, потому что:

  1. Я проверил базу данных, хранилище контактов Android, которая подтверждает дубликаты приходят из WhatsApp и
  2. Перейдя в Настройки > Пользователи и учетные записи и удаления в Whatsapp, Все эти повторяющиеся контакты пропали. Они вновь появляются, когда я перезагрузить приложение WhatsApp.

Преобладающая мудрость (например, такой ответ) заключается в том, что чтобы устранить эту проблему просто зайдите в приложение Контакты, нажимаем на три точки, выберите "Показать контакты", и снимите флажок в WhatsApp. Однако, когда я делаю это, я выбираю "индивидуальный вид", но WhatsApp не отображается в списке учетных записей, которые я могу показать или скрыть.

Есть ли другой способ, чтобы скрыть список контактов в WhatsApp в Android по умолчанию контактах?

Вещи, которые я предпочел бы избежать:

  1. Контакты отмена разрешений для WhatsApp. Если я это сделаю, я не смогу видеть имена контактов больше в WhatsApp.
  2. Используя другое приложение контактов. Это просто уход от проблемы, а не пытаться исправить это.

Телефон Xiaomi Ми А1, и операционную систему Android One, версия 8.0.

+772
iceblueorbitz 10 авг. 2020 г., 21:06:57

Я и мои коллеги ведем поиск литературы, которые будут использоваться, чтобы спорить об эксперименте. Мы только начали наш SLR и заметил, что АСМ и IEEE дает очень разные результаты.

При поиске "Java и Джекс+РС", АКМ дает 26 просмотров в то время как стандарт IEEE дает 18577 просмотров при поиске "Java и Джекс+РС". Термин "Java и джерси" дает 25 просмотров на ACM и 701 просмотров по стандарту IEEE. В других поисковых запросов, таких как "авт и OAuth*", АСМ дает 62 просмотров в то время как стандарт IEEE дает 65 просмотров.

Мы используем одни и те же фильтры в обоих поисковых запросов (лимит в журналах и сборниках, все годы, только метаданные). При поиске в АЦМ мы ограничиваем издатель только АСМ, и по стандарту IEEE ограничить издателя в IEEE.

Эти типы обычно результаты? Я понимаю, что они разные издатели и, следовательно, издает различные документы, но эти результаты, кажется, выкл.

+713
Sundharam Venkat 20 янв. 2023 г., 05:43:03

Поскольку у вас нет ни членов семьи, оставшихся дома, пока вы путешествуете, нет никакой документации о том, что нужно помнить: включать.

Завершает рассмотрение этого пункта на контрольный список. Вперед к следующему!

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

+712
Dan Pritts 14 сент. 2010 г., 08:22:50

Нет способности эквивалентно АПТ-ключ, и нет необходимости.

АПТ-ключ делает свою работу, и профпригодность учитывает это плавно.

+645
JohnZastrow 27 янв. 2010 г., 07:52:47

В LG Нитро высокой четкости HD (в LG P930) является американским вариантом телефона LG Оптимус LTE для AT&T. Он был выпущен 4 декабря 2011 года, и изначально поставляться с Android 4.0 мороженое сэндвич.

enter image description here
Компания LG Нитро высокой четкости (источник: отзывы)

Ресурсы:

+477
Graycat 3 июн. 2014 г., 12:07:18

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

ИС добавить маршрут по умолчанию через "${ИС}" Дэв "${Дева}" таблица "${таблице}"
.
.
.
IP-маршрута заподлицо таблице "${таблице}"

Если есть хороший способ, чтобы программно найти неиспользуемую таблицу ID, чтобы использовать для этой цели?

+394
user6374 22 февр. 2010 г., 15:01:57

Я не уверен, что версии Gmail у вас есть, но версия у меня есть (вместе с Android 4.1.2) позволяет мне "показывать картинки" в сообщении, то у меня есть возможность "всегда показывать картинки от этого пользователя".

Always show pictures from this sender

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

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

+164
891816424love 8 авг. 2013 г., 13:59:07

Я задал подобный вопрос здесь, но что-то раздражает то, что привлекла мое внимание. Почти все пин дубовых деревьев на моем участке растут вверх и вниз по стволам, как сумасшедший этой весной, многие из них впервые. Примечание: это не корневыми отпрысками. Каких условиях может быть причиной этого? Не имеют ничего общего с суровой зимы? enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

+114
Tomas 15 июл. 2020 г., 16:30:13

Решение для вас будет просто использовать gnomesu вместо судо. Как написано здесь,

это нормальный вопрос безопасности. У вас есть система Multi пользователей, где многие пользователи могут авторизоваться, либо локальный или удаленный, в GUI сессии. Что, если войти в систему, чтобы люди могли открыть окна на рабочем столе без вашего пособия? Неудобно, по крайней мере, а также будет возможность создать окна такие, что они могли читать все ваши клавиатурный включая банковские счета. Таким образом, необходимость давать пособие с команду xhost.

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

Попробуйте выполнить команду xhost +localhost в в ваш терминал и запустив снова судо. Это позволяет всем пользователям системы (т. е. root) открыть окна на вашем экране. Убедитесь, что используете +локальный , а не просто +, как это более безопасно, чтобы разрешить подключения только с localhost, чем от в любом месте.

Чтобы сделать это постоянным, редактирование ~/.файла файл такой:

Выполните команду gedit ~/.файла

Отредактируйте файл, чтобы выглядеть так (он должен быть пустым в начале):

#!/бин/Баш 
команду xhost +localhost в &

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

+92
Geethanjali Eswaran 24 мая 2020 г., 21:14:06

musl библиотеки libc позволяет менять жидкость в корень даже после якобы падения разрешения с битом setuid(1000). Я не в состоянии воспроизвести проблему с версией glibc.

Код:

#определите _gnu_source
#включить <запустите.ч>
#включить заголовочный файл <stdio.ч>

тап_п(недействительными) {
 uid_t Р, Е, С;

 getresuid(&Р &Е &С);
 функции printf("%д %д %д\п", р, е, с);

 если (установлен бит setuid(1000) != 0)
 ставит("битом setuid(1000) ошибка");
еще
 ставит("с setuid(1000) успешно");

 getresuid(&Р &Е &С);
 функции printf("%д %д %д\п", р, е, с);

 если (установлен бит setuid(0) != 0)
 ставит("битом setuid(0) ошибка");
еще
 ставит("битом setuid(0) успешно");

 getresuid(&Р &Е &С);
 функции printf("%д %д %д\п", р, е, с);

 возврат 0;
}

что, после компиляции с помощью GCC -о setuidtest setuidtest.с, получим следующий вывод при запуске от root

0 0 0
с setuid(1000) успешно
1000 1000 1000
с setuid(0) успешно
0 0 0

Я бегу пустоту в Linux с ядром версии 4.18_1 и musl версия 1.1.20_2, glibc версии 2.28_3

Откуда эта проблема взялась? Это мое ядро, musl libc или мое тестирование кода просто неправильные? Эта проблема воспроизводимая другими людьми?

выход трассированием (musl unpriviledged)

$ трассированием ./setuidtest (unpriviledged)
для execve("./setuidtest", ["./setuidtest"], 0x7ffdd15f69e0 /* 24 Варс */) = 0
arch_prctl(ARCH_SET_FS, 0x7f538925cb28) = 0
set_tid_address(0x7f538925cb68) = 6299
mprotect(0x7f5389259000, 4096, PROT_READ) = 0
mprotect(0x55e9c5e75000, 4096, PROT_READ) = 0
getresuid([1000], [1000], [1000]) = 0
функции ioctl(1, TIOCGWINSZ, 0x7ffd2faf3160) = -1 ENOTTY (не терминал)
используя(1, [{iov_base="1000 1000 1000", iov_len=14}, {iov_base="\Н", iov_len=1}], 21000 1000 1000
) = 15
rt_sigprocmask(SIG_BLOCK, ~[RT_1 RTMIN RT_2], [], 8) = 0
rt_sigprocmask(SIG_BLOCK, ~[], нулевое, 8) = 0
с setuid(1000) = 0
фьютекс(0x7f538925cfd8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
rt_sigprocmask(SIG_SETMASK, [], нулевое, 8) = 0
getresuid([1000], [1000], [1000]) = 0
rt_sigprocmask(SIG_BLOCK, ~[RT_1 RTMIN RT_2], [], 8) = 0
rt_sigprocmask(SIG_BLOCK, ~[], нулевое, 8) = 0
с setuid(0) = -1 возникновения ошибки EPERM (операция не разрешена)
фьютекс(0x7f538925cfd8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
rt_sigprocmask(SIG_SETMASK, [], нулевое, 8) = 0
getresuid([1000], [1000], [1000]) = 0
используя(1, [{iov_base="битов setuid(1000) успешно\n1000 1000 "..., iov_len=69}, {iov_base=нуль, iov_len=0}], 2setuid(1000) успешно
1000 1000 1000
с setuid(0) не удалось
1000 1000 1000
) = 69
exit_group(0) = ?
+++ выход с 0 +++

трассированием выход (musl как root)

# трассированием ./setuidtest (как root)
для execve("./setuidtest", ["./setuidtest"], 0x7ffe19286eb0 /* 18 Варс */) = 0
arch_prctl(ARCH_SET_FS, 0x7f08b2619b28) = 0
set_tid_address(0x7f08b2619b68) = 6409
mprotect(0x7f08b2616000, 4096, PROT_READ) = 0
mprotect(0x561507eb4000, 4096, PROT_READ) = 0
getresuid([0], [0], [0]) = 0
функции ioctl(1, TIOCGWINSZ, 0x7fffb222bff0) = -1 ENOTTY (не терминал)
используя(1, [{iov_base="0 0 0", iov_len=5}, {iov_base="\Н", iov_len=1}], 20 0 0
) = 6
rt_sigprocmask(SIG_BLOCK, ~[RT_1 RTMIN RT_2], [], 8) = 0
rt_sigprocmask(SIG_BLOCK, ~[], нулевое, 8) = 0
с setuid(1000) = 0
фьютекс(0x7f08b2619fd8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
rt_sigprocmask(SIG_SETMASK, [], нулевое, 8) = 0
getresuid([1000], [1000], [1000]) = 0
rt_sigprocmask(SIG_BLOCK, ~[RT_1 RTMIN RT_2], [], 8) = 0
rt_sigprocmask(SIG_BLOCK, ~[], нулевое, 8) = 0
битов setuid(0) = 0
фьютекс(0x7f08b2619fd8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
rt_sigprocmask(SIG_SETMASK, [], нулевое, 8) = 0
getresuid([0], [0], [0]) = 0
используя(1, [{iov_base="битов setuid(1000) успешно\n1000 1000 "..., iov_len=62}, {iov_base=нуль, iov_len=0}], 2setuid(1000) успешно
1000 1000 1000
с setuid(0) успешно
0 0 0
) = 62
exit_group(0) = ?
+++ выход с 0 +++

выход трассированием (в glibc непривилегированные)

$ трассированием ./setuidtest
для execve("./setuidtest", ["./setuidtest"], 0x7fff673b2c20 /* 14 Варс */) = 0
БРК(нулевое) = 0x558b5fbb1000
открыть ("файл/etc/ЛД.так.поджатие", R_OK) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "файл/etc/ЛД.так.кэш", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/СС/x86_64 с/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("файл/usr/lib в/ТЛС/x86_64 с/x86_64 с", 0x7ffc25da1650) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/СС/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("файл/usr/lib в/ТЛС/x86_64 с", 0x7ffc25da1650) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/СС/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("файл/usr/lib в/ТЛС/x86_64 с", 0x7ffc25da1650) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/СС/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("в/usr/lib в/ТЛС", 0x7ffc25da1650) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/x86_64 с/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("файл/usr/lib в/x86_64 с/x86_64 с", 0x7ffc25da1650) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("каталог/usr/lib в/x86_64 с", 0x7ffc25da1650) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("каталог/usr/lib в/x86_64 с", 0x7ffc25da1650) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/библиотеки libc.так.6", ФЛАГОВ O_RDONLY|O_CLOEXEC) = 3
читать(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\3604\2\0\0\0\0\0"..., 832) = 832
функцию fstat(3, {st_mode=значений: s_ifreg|0755, st_size=18248368, ...}) = 0
вызов mmap(null, в 8192, PROT_READ|флаг prot_write, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbcd7093000
вызов mmap(null, то 3921920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbcd6ab1000
mprotect(0x7fbcd6c65000, 2097152, PROT_NONE) = 0
мкарта(0x7fbcd6e65000, 24576, PROT_READ|флаг prot_write, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b4000) = 0x7fbcd6e65000
вызов mmap(0x7fbcd6e6b000, 14336, PROT_READ|флаг prot_write, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fbcd6e6b000
рядом(3) = 0
arch_prctl(ARCH_SET_FS, 0x7fbcd7094500) = 0
mprotect(0x7fbcd6e65000, 16384, PROT_READ) = 0
mprotect(0x558b5f5c0000, 4096, PROT_READ) = 0
mprotect(0x7fbcd7095000, 4096, PROT_READ) = 0
getresuid([1000], [1000], [1000]) = 0
функцию fstat(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
БРК(нулевое) = 0x558b5fbb1000
БРК(0x558b5fbd2000) = 0x558b5fbd2000
с setuid(1000) = 0
getresuid([1000], [1000], [1000]) = 0
с setuid(0) = -1 возникновения ошибки EPERM (операция не разрешена)
getresuid([1000], [1000], [1000]) = 0
пишите(1, "1000 1000 1000\nsetuid(1000) зисс"..., 841000 1000 1000
с setuid(1000) успешно
1000 1000 1000
с setuid(0) не удалось
1000 1000 1000
) = 84
exit_group(0) = ?
+++ выход с 0 +++

выход трассированием (обычно как root)

# трассированием ./setuidtest
для execve("./тест", ["./тест"], 0x7ffc9176d3f0 /* 15 Варс */) = 0
БРК(нулевое) = 0x5653f4910000
открыть ("файл/etc/ЛД.так.поджатие", R_OK) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "файл/etc/ЛД.так.кэш", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/СС/x86_64 с/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("файл/usr/lib в/ТЛС/x86_64 с/x86_64 с", 0x7ffe7d0c9550) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/СС/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("файл/usr/lib в/ТЛС/x86_64 с", 0x7ffe7d0c9550) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/СС/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("файл/usr/lib в/ТЛС/x86_64 с", 0x7ffe7d0c9550) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/СС/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("в/usr/lib в/ТЛС", 0x7ffe7d0c9550) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/x86_64 с/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("файл/usr/lib в/x86_64 с/x86_64 с", 0x7ffe7d0c9550) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("каталог/usr/lib в/x86_64 с", 0x7ffe7d0c9550) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/x86_64 с/библиотеки libc.так.6", флагов o_rdonly|O_CLOEXEC) = -1 ENOENT (нет такого файла или каталога)
стат ("каталог/usr/lib в/x86_64 с", 0x7ffe7d0c9550) = -1 ENOENT (нет такого файла или каталога)
в openat(AT_FDCWD, "в/usr/lib в/библиотеки libc.так.6", ФЛАГОВ O_RDONLY|O_CLOEXEC) = 3
читать(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\3604\2\0\0\0\0\0"..., 832) = 832
функцию fstat(3, {st_mode=значений: s_ifreg|0755, st_size=18248368, ...}) = 0
вызов mmap(null, в 8192, PROT_READ|флаг prot_write, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb18f5af000
вызов mmap(null, то 3921920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb18efcd000
mprotect(0x7fb18f181000, 2097152, PROT_NONE) = 0
мкарта(0x7fb18f381000, 24576, PROT_READ|флаг prot_write, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b4000) = 0x7fb18f381000
вызов mmap(0x7fb18f387000, 14336, PROT_READ|флаг prot_write, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb18f387000
рядом(3) = 0
arch_prctl(ARCH_SET_FS, 0x7fb18f5b0500) = 0
mprotect(0x7fb18f381000, 16384, PROT_READ) = 0
mprotect(0x5653f40df000, 4096, PROT_READ) = 0
mprotect(0x7fb18f5b1000, 4096, PROT_READ) = 0
getresuid([0], [0], [0]) = 0
функцию fstat(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
БРК(нулевое) = 0x5653f4910000
БРК(0x5653f4931000) = 0x5653f4931000
с setuid(1000) = 0
getresuid([1000], [1000], [1000]) = 0
с setuid(0) = -1 возникновения ошибки EPERM (операция не разрешена)
getresuid([1000], [1000], [1000]) = 0
записи(1, "0 0 0\nsetuid(1000) успешно\n1000"..., 750 0 0
с setuid(1000) успешно
1000 1000 1000
с setuid(0) не удалось
1000 1000 1000
) = 75
exit_group(0) = ?
+++ выход с 0 +++
+75
Rolnik 30 мая 2020 г., 18:43:43

По данным этого блога Нил Браунсоздатель команды mdadm), вы можете избежать снижения быстродействия из-за адресас блока диапазон резервного процесса:

  1. Увеличение количества устройств RAID (например: перекроить из 4-дисков RAID5 на 5 дисках RAID6) для mdadm --растут из /dev/md0 --Уровень=6 --RAID-диска=5
  2. Не указывайте параметр - резервное копирование-файл

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

Этот отрывок из его статьи объясняет это более подробно:

Как Меняется Уровень Работы

Если мы думаем о "массив RAID5" как немного более универсальный характер, чем стандартной четкости, и позволяют любой макет полосами данных плюс 1 блок четности на нескольких устройствах, то мы можем думать о RAID4 как просто частный случай конфигурации RAID5. Затем мы можем представить себе преобразование из массива RAID0 на массив RAID5, как с двух шагов. Первая преобразует в массив RAID5 с помощью RAID4 макет с диском четности в качестве последнего диска. Это явно не требует каких-либо данных, которые должны быть перемещены, так что изменения могут быть мгновенными. Он создает деградировавший массив RAID5 в RAID4 макет так, чтобы он не полный, но это явно шаг в правильном направлении. Я уверен, что вы можете увидеть, что будет дальше. После преобразования в RAID0 для деградировавший массив RAID5 с необычной планировкой мы будем использовать новые изменения в макете функции для преобразования реальной конфигурации RAID5.

Это очень похожий процесс, который теперь может использоваться, чтобы преобразовать массив RAID5 в RAID6. Мы сначала изменить массив RAID5 в RAID6 с нестандартной планировкой, что и блоков четности распределены как обычно, но Q блокирует все на последний прибор (новое устройство). Так это RAID6 с помощью драйвера RAID6, но с RAID6 макет. Так что мы "просто" изменить макет и задание выполнено.

В RAID6 может быть преобразован в массив RAID5 на обратный процесс. Сначала мы изменим макет макет, который практически массив RAID5, но с дополнительной м диске. Затем мы превращаем в реальные массив RAID5, забыв о м диске.

Сложности повторного разнесения данных

Во всем этом самый сложный часть гарантируя, что сведения выживает в аварии или другие отключения системы. С первого перекроить, который просто позволил увеличить количество устройств, это было довольно легко. Большую часть времени существует разрыв в устройствах между данных, где в старой планировки в чтение, и где данные в новый формат пишется. Этот разрыв позволяет нам иметь две копии данных. Если мы отключим пишет на небольшую часть, хотя она переформируется, то после аварии мы знаем, что старая разметка еще есть хорошие данные, и просто перекомпоновать последние несколько полосок где-нибудь мы записали, что мы были до.

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

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

Это наиболее сложная часть новых функций для mdadm 3.1 (который еще не выпущен, но его можно найти в папке Devel-3.1 ветку в Git://нейл.коричневый.наименование/адреса). для mdadm контролирует изменить, установив верхний предел того, как далеко он может развиться в любое время и убедившись, что зона, что позволяет переставлять и пишет отключен и был резервной копии.

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

+52
Nicole Balderas 13 янв. 2021 г., 18:01:54

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