Попробовать #!/bin/bash
Вторая вещь: find / -name bash
Третья вещь: ls -al /bin/bash
Это - не обязательно плохой знак, но позвольте мне ответить на Ваш последний вопрос сначала:
Что означает точно?
В top
исходный код (из http://www.opensource.apple.com/release/mac-os-x-1082/) застрявшее состояние упоминается как идентификатор LIBTOP_STATE_STUCK
(от libtop.c
):
libtop_state_str(uint32_t state)
{
const char *strings[] = {
"zombie",
#define LIBTOP_STATE_ZOMBIE 0
"running",
#define LIBTOP_STATE_RUN 1
"stuck",
#define LIBTOP_STATE_STUCK 2
"sleeping",
#define LIBTOP_STATE_SLEEP 3
"idle",
#define LIBTOP_STATE_IDLE 4
"stopped",
#define LIBTOP_STATE_STOP 5
"halted",
#define LIBTOP_STATE_HALT 6
"unknown"
#define LIBTOP_STATE_UNKNOWN 7
};
(...)
}
Позже в том же файле, LIBTOP_STATE_STUCK
отображается на состоянии ядра TH_STATE_UNINTERRUPTIBLE
:
/* Translate a mach state to a state in the state breakdown array. */
static int
libtop_p_mach_state_order(int state, long sleeptime)
{
switch (state) {
case TH_STATE_RUNNING:
return LIBTOP_STATE_RUN;
case TH_STATE_UNINTERRUPTIBLE:
return LIBTOP_STATE_STUCK;
(...)
}
Таким образом, процесс в застрявшем состоянии означает, что процесс/поток находится в бесперебойном состоянии ожидания, которое является как TH_STATE_UNINTERRUPTIBLE
определяется в структуре ядра thread_basic_info
(см. http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/thread_basic_info.html):
struct thread_basic_info
{
(...)
integer_t run_state;
(...)
};
где run_state
:
run_state: состояние выполнения потока. Возможные значения:
(...)
- TH_STATE_UNINTERRUPTIBLE: поток находится в бесперебойном состоянии ожидания.
(...)
Это обычно вызывается процессом, ожидающим на вводе-выводе, то есть, процесс запросил читать или записать в диск или сеть и ожидает системного вызова возврата (см. http://en.wikipedia.org/wiki/Sleep_%28operating_system%29#Uninterruptible_sleep или http://www.novell.com/support/kb/doc.php?id=7002725 для получения дополнительной информации).
(Если не использование опций BSD, поскольку это обычно имеет место в Linux, ps
показывает бесперебойный сон как D состояние.)
Это - часть нормального жизненного цикла процесса?
Да, это. То, что не нормально, - то, что процесс остается в этом состоянии в течение долгого времени. Это - плохой знак.
Почему этот процесс в особенности?
Трудный сказать. Это обычно вызывается узкими местами ввода-вывода с тяжелой активностью диска или ухудшенной возможностью соединения при использовании сетевых файловых систем (самый обычный сценарий, по моему опыту).
(Это - связанный вопрос в, Спрашивают Отличающийся: https://apple.stackexchange.com/questions/58697/how-does-stuck-in-results-of-top-relate-to-not-responding-in-activity-m.)
ps axug
илиps -eo user,pid,stat,args
. В Linux те с 'D' заявляют код с тем жеps
команды. Посмотрите объяснение ключевого слова состояния (OS X) или раздел PROCESS STATE CODES (Linux) вman ps
для получения дополнительной информации. Или в OS X Вы могли работатьtop
и ищите процессы, отмеченные какstuck
в столбце STATE. положительная сторона – jaume 06.01.2016, 09:24