Необходимо явно убить программу с помощью [116608]kill testfb[116609] или если она не реагирует на это [116610]killall -9 testfb[116611].[116151].
Современные системы инициализации, такие как 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
должен сделать несколько вещей до того, как процессы, запущенные ранее, сделают то же самое. И т.д. Это просто случайность и не будет каждый раз повторяться.
Загрузка - это загруженное время для системы - многие вещи происходят одновременно. Поэтому, если вы впоследствии сравните время выполнения с запуском одного процесса, оно будет медленнее, потому что в последнем случае ему не придется конкурировать со многими (или, в значительной степени, с любыми) другими активными процессами.