не уверен, что я установил имя своего хоста, нужно, чтобы кто-то выпрямил меня

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

0: процесс не ждет poll_schedule_timeout poll() - системный вызов1, используемый для обработки ввода-вывода. Это похоже на select() .2 Приложения, использующие неблокирующий ввод-вывод, используют эти вызовы, чтобы узнать, могут ли они читать или записывать в файл, а не блокировать его. Они часто используются для потоков ввода / вывода, которые не могут быть заблокированы (иначе, возможно, ваша мышь перестанет двигаться). Ожидающий канал poll_schedule_timeout указывает, что задача ожидает ввода-вывода, будь то аппаратное обеспечение, например клавиатуры и мыши, звуковые устройства или даже сетевые сокеты. Функция в ядре. Они определены в <linux/poll.h>. poll была реализацией, впервые увиденной в System V, select является эквивалентом BSD UNIX. futex_wait_queue_me: Чтобы объяснить это, мы должны взглянуть на Locks. Блокировка - это сохраненное состояние в системе, которое указывает, что задача работает с ресурсом. Например, может быть только одна задача, которая читает файл. Эта задача блокирует файл, любая другая задача1, которая пытается прочитать файл, будет знать, что она заблокирована, и дождитесь, когда блокировка исчезнет, ​​прежде чем она сможет получить к ней доступ. То же самое происходит и для процессорного времени. Современная версия Linux (на большинстве архитектур) использует в ядре Futex (быстрый мьютекс пользовательского пространства). Мьютекс, взаимное исключение, относится к идее, что общий ресурс может быть доступен только одной задачей в любое время. Для этого устанавливаются флаги в системе. Если процесс ожидает заблокированного ресурса, это называется Busy Waiting или «Spinning», ссылаясь на то, что он пытается получить доступ к нему снова и снова, пока это не удастся. Говорят, что задача закрывается, когда она вращается. Блокировки Futex можно рассматривать как число в пользовательском пространстве, которое может увеличиваться или уменьшаться задачей (в случаях, когда к ресурсу можно обращаться несколькими задачами, это число может превышать единицу). Это число показано на диаграмме4. Эти задачи помещаются в очередь ожидания, простая очередь задач, которые должны выполнять некоторую работу, когда время обработки доступно, задачи выполняют свою работу и удаляются из очереди. futex_wait_queue_me ставит задачи. Затем он ждет сигнала, тайм-аут или пробуждение. Задача, которая находится в этом ожидающем канале, не ждет очереди ожидания, они ждут очереди. Задача может быть либо Process3, либо Thread2 A Thread является подразделением процесса. Многие потоки могут запускаться параллельно. Процесс является полномасштабной программой, состоящей из одного или нескольких потоков, хотя программа может также состоять из нескольких процессов. Помните, что это все еще очень высокий уровень представления вещей, он не рассматривает детали реализации __skb_recv_datagram Подождите некоторые данные о заблокированном сетевом сокете. sk_wait_data Подождите несколько данных в сетевом сокете. do_exit Это последняя часть выхода из процесса. do_exit() вызывает следующий schedule(), чтобы запланировать другой процесс. Когда вызывается do_exit(), процесс является ZOMBIE. do_wait Процесс добавляется в очередь ожидания планировщика. pipe_wait, unix_stream_data_wait Процесс ожидает данных из подпроцесса. Это происходит, например, при запуске такого кода:
echo | sleep 10 && echo hallo              # pipe
или
cat < hello.c                              # unix data stream
hrtimer_nanosleep Процесс спящий, используя метод hrtimer_nanosleep(). Этот метод может использоваться для программ для сна в течение определенных интервалов времени с точностью до наносекунды.

Это еще не все, но я не наблюдал других. Опубликуйте комментарий, если я пропустил что-нибудь.

1
задан 18 September 2013 в 07:41

1 ответ

Ответ Антуана Родригеса хороший.

Просто добавьте мои 2 цента, поскольку я установил / настроил Zimbra 8.0.3 для внутренней тестовой среды раньше.

В моем случае , Я просто установил имя хоста (/etc/hostname) так же, как и полное доменное имя, и позвольте DNS-серверу обрабатывать разрешение имен.

ПРИМЕЧАНИЕ. Не уверен, что у вас есть DNS-сервер в сети, но я настоятельно рекомендую установить если вы хотите отправлять / получать электронные письма (вам понадобятся записи MX в дополнение к A / AAAA и CNAME).

/etc/hosts file - это статический поиск таблиц для имен хостов. Просмотр имени хоста контролируется файлом /etc/nsswitch.conf, по умолчанию он просматривается в файле hosts, а затем DNS-сервере.

hosts: files dns

Таким образом, имена хостов, которые вы установили в разрешаются только на самом сервере, если вы не нажмете одни и те же записи на все клиентские компьютеры (которые будут подключаться к серверу zimbra).

Off-topic

В дополнение к изменению хостинг в /etc/hostname, вы также можете изменить имя хоста на лету, напрямую изменив /proc/sys/kernel/hostname.

Например:

echo greenhornet.mydomain.co > /proc/sys/kernel/hostname
exec -l $SHELL

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

1
ответ дан 24 May 2018 в 17:51
  • 1
    Я не знаю, где это отвечает на мой вопрос. Я знаю, как изменить его, но я хотел бы узнать, что не так с файлом моих хостов. – ErocM 22 September 2013 в 22:04
  • 2
    Мои извинения, я думал, Антуан уже ответил на вопрос. Я просто обновил ответ, чтобы добавить еще немного соуса, надеюсь, что это поможет в некоторой степени. – Terry Wang 23 September 2013 в 07:13
  • 3
    Хорошая информация +1 для того, чтобы помочь мне с несколькими предметами. Еще раз спасибо. – ErocM 24 September 2013 в 20:53

Другие вопросы по тегам:

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