Как начать работу в остановленном состоянии?

651
nibot

В bash, как я могу запустить задание в остановленном состоянии, как будто я запустил его нормально, а затем сразу нажал Ctrl-Z?

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

2
Дубликат http://serverfault.com/questions/293632/how-do-i-start-a-process-in-suspended-state-under-linux? Foon 11 лет назад 0
Да, это точная копия. К сожалению, другой вопрос также не получил ответа к моему удовлетворению. nibot 11 лет назад 0

2 ответа на вопрос

5
choroba

Вы можете запустить новый подоболочек, немедленно остановить его, а затем (т.е. после повторного запуска makint) запустить вашу команду. Я использовал переменную $ BASHPID, чтобы получить PID подоболочки, так как $$ по-прежнему возвращает PID родителя:

( kill -SIGSTOP $BASHPID; exec my_command ) 

Использование execздесь приведет к тому, что my_commandпроцесс будет использовать тот же PID, что и подоболочка.

Измените его на `(kill -SIGSTOP $ BASHPID; exec my_command)`, и я думаю, что у нас есть победитель! nibot 11 лет назад 1
4
Zardus

I know this question is quite old, but just in case someone is looking for this functionality, like I was:

I recently added this to my LD_PRELOAD module collection (https://github.com/zardus/preeny). Using preeny, you can have a process suspend itself on startup:

# https://github.com/zardus/preeny # cd preeny # make # LD_PRELOAD=x86_64-linux-gnu/startstop.so /bin/echo TEST [1]+ Stopped LD_PRELOAD=x86_64-linux-gnu/startstop.so /bin/echo TEST # fg TEST 

Preeny suspends the process during library startup, before main() is called.

Привет, Zardus, и добро пожаловать в Super User. Не беспокойтесь об ответе на старый вопрос. Это интересный подход! a CVn 8 лет назад 1
Этот подход хорош, потому что он на самом деле загружает двоичный файл. Тем не менее, я предполагаю, что другие функции конструктора могут быть запущены раньше. user877329 6 лет назад 0
Да ... К сожалению, я не нашел способа контролировать порядок выполнения конструкторов. Zardus 6 лет назад 0

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