Что делает “прерываемый сон” состояние, указывают?

Острота, использующая только Zsh:

files=(*); for x in {1..30}; do i=$((RANDOM % ${#files[@]} + 1)); echo "${files[i]}"; done

То же в Bash, где индексы массива основаны на нуле:

files=(*); for x in {1..30}; do i=$((RANDOM % ${#files[@]})); echo "${files[i]}"; done

Обратите внимание, что никакая версия не принимает дубликаты во внимание.

18
13.04.2017, 15:22
3 ответа

Вы ничего не сделали к процессу Firefox. Это уже было в состоянии S прежде. “Прерываемый сон” эффективно означает неактивный. Процесс ожидает и проснется, когда он получает вход. Это - нормальное состояние процесса, если Вы не ловите его, в то время как это занято.

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

Вы можете получать окно с другими инструментами, но оно несколько зависит от того, что точно произошло с ним и сотрудничает ли Ваш менеджер окон. Попробуйте wmctrl. Сначала перечислите окна Firefox с wmctrl -l | grep Firefox. Отметьте окно ID в первом столбце, скажите 0x12345678. Для возвращения окна текущему рабочему столу использовать wmctrl -R 0x12345678; альтернативно, использовать wmctrl -a 0x12345678 переключаться на его рабочий стол. Максимизировать его (который заботится об окнах вне экрана или уменьшенный к единственному пикселю), выполненный wmctrl -r 0x12345678 -b add,maximized_vert,maximized_horz. С другой стороны, переместите и измените размер окна с wmctrl -r 0x12345678 -e 1,50,100,1000,800. Вы, возможно, должны не заштриховать или раскрыть окно с wmctrl -r 0x12345678 -b remove,shaded или wmctrl -r 0x12345678 -b remove,hidden.

8
27.01.2020, 19:46
  • 1
    Спасибо Gilles - Это может звучать необычным, но я не уверен, какой Менеджер окон я выполняю. Это мог быть LXDE (Перечисленный в о поле LXPanel)? Кроме того, wmctrl, кажется, не доступен на моем дистрибутиве - простите мое незнание, но wmctrl может просто быть загружен и выполнен, или это должно быть установлено (зависимости, и т.д.)? –  user66001 20.10.2013, 02:13
  • 2
    @user66001 LXDE является настольной средой. Его менеджером окон по умолчанию является Openbox (я не уверен, поддерживает ли он другой). Если Ваше распределение не имеет wmctrl, можно попытаться загрузить источник и скомпилировать его. Это зависит от нескольких библиотек, но ни один из них не экзотичен, им должно все предоставить Ваше распределение. Если Вы имеете xdotool, это может делать все их, или по крайней мере тот, который это полезно, поэтому испытывает его (посмотрите на команды окна и рабочий стол и команды окна в руководстве). А-ч –  Gilles 'SO- stop being evil' 20.10.2013, 02:17
  • 3
    , спасибо. Нет xdotool также - Когда Вы подразумеваете, что это "может делать все их", Вы говорящий о компиляции wmctrl, или операции, которые можно выполнить с ним? Можно ли указать на меня на какие-либо рекомендуемые руководства по компиляции источников Linux (В новинку для Linux от среды Windows)? –  user66001 20.10.2013, 02:47
  • 4
    @user66001 я имел в виду это xdotool и wmctrl имейте схожую функциональность (до того, в чем Вы нуждаетесь здесь, они отличаются по тому, что еще они предлагают). Если Вы плохо знакомы с Linux, я рекомендую распределение с большим количеством пакетов. При выполнении RHEL или варианта, такого как CentOS или Научный Linux на Repoforge существует пакет. Если бы Вы хотите создать из источника, считайте это — но было бы легче установить пакет, если можно найти тот. –  Gilles 'SO- stop being evil' 20.10.2013, 03:10
  • 5
    Какое-либо различие, в котором инструмент должно быть легче создать? Кроме того, если у Вас не было диспетчера пакетов в их дистрибутиве, какой? пакет? нужно искать (я предполагаю, что это - нелогичный вопрос, но на всякий случай я неправ в предположении, что пакет является просто пакетом двоичных файлов с зависимостями, перечисленными, и изменения конфигурации, думал, что я спрошу)? –  user66001 20.10.2013, 06:04

@msw сделал хорошее задание, объяснив Ваш 2-й Q и некоторые Ваши 1-е:

B) Предложите какие-либо относительно-простые-способы возвратить какую-либо форму управления, (по крайней мере) сохранить вкладки, которые я раздражающе открыл в режиме Private Browsing?

Таким образом, я попытаюсь обратиться к Вашему 1-му Q немного больше:

A) Тщательно продуманный относительно того, каково состояние, более подробно?

Значения состояния Sl (Это - нижний регистр L):

   S    Interruptible sleep (waiting for an event to complete)
   l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

                 lifecycle of process

PROCESS STATE CODES
   R  running or runnable (on run queue)
   D  uninterruptible sleep (usually IO)
   S  interruptible sleep (waiting for an event to complete)
   Z  defunct/zombie, terminated but not reaped by its parent
   T  stopped, either by a job control signal or because
      it is being traced
   [...]

Более подробная информация видна в странице справочника сигнала, man 7 signal, а также в этом учебном руководстве, названном: состояния процесса Linux.

18
27.01.2020, 19:46
  • 1
    Очень (!) полезный для понимания внутренних работ.Спасибо! +1 –  user66001 20.10.2013, 01:54
  • 2
    @user66001 признает, что answer.it также помогают мне спасибо. –  muneeb_ahmed 22.02.2018, 08:33

Для X-клиентов возможно потерять их соединение и так или иначе не быть уведомленным относительно него. Процесс будет часто ожидать на сокете, через который ничто никогда не будет прибывать, оставляя его в бесперебойном сне.

Для Firefox только (и некоторые другие программы как Gvim или Chrome, которые делают специальные положения для хранения состояния в отказе), простое:

$ kill -TERM pid

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

2
27.01.2020, 19:46
  • 1
    довольно маловероятно, что локальный X-клиент потерял бы соединение с X-сервером, тем более, что результат нажатия клавиши. Уничтожение Firefox не сохранило бы информацию об окнах в частном режиме просмотра. –  Gilles 'SO- stop being evil' 20.10.2013, 02:01
  • 2
    я использую Lazarus, и (если не использование режима Private Browsing, чтобы попытаться передвинуть мою основную учетную запись Gmail, открыть gdocs для просматривания/редактирования документов с помощью информации с веб-сайтов в примыкании к вкладкам, не выходя из всех моих учетных записей Gmail - Grr, Google) имеет FF, "Помнят мои окна и вкладки с прошлого раза", таким образом, я только забочусь о вкладках, открытых в режиме Private Browsing. Так, в то время как хорошо знать вышеупомянутый аргумент kill, Я сомневаюсь, что FF сохранил бы мои вкладки в этой ситуации. Какой-либо путь к FF для повторного прикрепления к X? –  user66001 20.10.2013, 02:05
  • 3
    "Какой-либо путь к FF для повторного прикрепления к X?" потому что я никогда не мог выяснить, как окно может быть не отображено/уничтожено без клиентского процесса, получив сигнал, я предполагаю, что сокет от программы FF до UI остается открытым. Пока процесс подключен к сокету, я не знаю ни о каком способе, которым любой процесс мог насладиться этим. (Теперь, когда Вы заставили меня думать об этом, я подозреваю, что это вышло из ошибки протокола между X-сервером и клиентом, который является безумно трудным (т.е. я никогда не пробовал бы) для отладки). –  msw 20.10.2013, 02:59

Теги

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