Процесс убил перед запуском в фоновом режиме

Есть две причины, по которым такие zip-файлы защищены паролем:

  1. Кто-то не хочет, чтобы у вас был к ним доступ.

  2. Чтобы обойти фильтры спама / вредоносного ПО. В этом случае обход вызывает подозрение. Быстрый поиск в Google показывает, что есть много прошивок с официальных сайтов. Почему они защищают прошивку паролем ?? Грм.

Механизм паролей в zip-файлах не является криптографически безопасным. Взломщики паролей методом перебора паролей должны выполнить свою работу самое большее за день. Видимо, для этой задачи есть несколько.

5
11.11.2018, 13:32
2 ответа

Процесс, в котором должен запускаться ваш cmd, будет уничтожен сигналом SIGHUPмежду fork()и exec(), и у любой оболочки nohupили других вещей не будет шансов запуститься. и иметь какой-либо эффект. (Вы можете проверить это с помощьюstrace)

Вместо nohupвы должны установить для SIGHUPзначениеSIG_IGN(игнорировать )в родительской оболочке перед выполнением вашей фоновой команды; если для обработчика сигнала установлено значение «игнорировать» или «по умолчанию», это расположение будет унаследовано через fork()и exec(). Пример:

#! /bin/sh
trap '' HUP    # ignore SIGHUP
xclock &
trap - HUP     # back to default

или:

#! /bin/sh
(trap '' HUP; xclock &)

Если вы запустите этот скрипт с xfce4-terminal -H -x script.sh, фоновая команда(xclock &)не будет уничтожена командой SIGHUP, отправленной после завершения script.sh.

Когда лидер сеанса (процесс, который «владеет» управляющим терминалом, script.shв вашем случае )завершается, ядро ​​​​отправляет SIGHUPвсем процессам со своего переднего плана . ] группа процессов; но set -mактивирует управление заданиями, а команды, начинающиеся с &, будут помещены в фоновую группу процессов, и они не будут сигнализироваться SIGHUP.

Если управление заданиями не включено (по умолчанию для не -интерактивного сценария ), команды, запущенные с помощью &, будут выполняться в одной и той же переднем плане группе процессов, а «Фоновый» режим будет имитирован , перенаправляющим их ввод с /dev/nullи позволяя им игнорироватьSIGINTи SIGQUIT.

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

Дополнительные примечания:

Похоже, что «режим удержания» различается между xtermиxfce4-terminal(и, возможно, другими терминалами на базе vte -). В то время как первый будет держать главную сторону pty открытой, последний отключит ее после выхода программы, запущенной с -eили -x, что приведет к сбою записи на подчиненную сторону с EIO. xtermтакже будет игнорировать WM_DELETE_WINDOWсообщения (, т. е. не закроется ), пока еще есть запущенные процессы из группы процессов переднего плана.

5
27.01.2020, 20:40

Я играл с этим. Я не могу понять это, но вот что я обнаружил. Я использовал сон 3 в качестве командной строки.

Эти двое работают. Я понятия не имею, что делает lsв конце. Скобки и двойные nohup, ну, они составляют подпроцесс -(. Думаю, так работает nohup). Я понятия не имею, почему nohupсам по себе не работает.

#!/bin/bash

nohup nohup sleep 3 &
ls #no idea why I need this

и

#!/bin/bash

(
nohup sleep 3 &
ls #no idea why I need this
)

/bin/trueработает вместо ls. Похоже, нам нужно вызвать внешнюю команду. До сих пор не знаю, почему.

0
27.01.2020, 20:40

Теги

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