Приложение отстает, если запущено с init.d?

[116148]Программа выполняется в памяти, удаление ее с диска обычно не приводит к остановке программы.

Необходимо явно убить программу с помощью [116608]kill testfb[116609] или если она не реагирует на это [116610]killall -9 testfb[116611].[116151].

2
01.04.2014, 17:31
1 ответ

Современные системы инициализации, такие как systemd и upstart, запускают несколько потоков выполнения, и даже с исходным init все может быть разветвлено во время процесса загрузки (например, вы уже сказали, что это делает ваша).

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

   Process 1 says "I'm here"
   Process 2 says "I'm here"
   Process 1 says "Doing my thing..."
   Process 3 says "I'm here"
   Process 3 says "Doing my thing..."
   Process 1 says "Still busy..."
   Process 2 says "Doing my thing..."

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

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

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

1
27.01.2020, 22:22

Теги

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