SHC Скомпилированный скрипт не запускается с использованием systemctl - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть очень простой bash скрипт с именем test.

#!/bin/bash

while true
do
    currdate=$(date +%d/%m/%Y-%H:%M:%S)
    echo -e "\n$currdate ..."
    sleep 1
done

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

Я скомпилировал это с помощью SHC имеет следующее: shc -r -U -f test.sh -o test

Запуск этого из командной строки работает, как ожидалось.

Я настроил для запуска этого с помощью systemctl, добавил мой файл конфигурации в /etc/init.d и это ссылки test

Если test - мой не выполненный bash сценарий, то systemclt start test работает нормально. Если я поменяю местами тест и заменим его соответствующей версией, произойдет сбой.

systemctl показывает состояние:

test.service - LSB: Test
   Loaded: loaded (/etc/init.d/test; generated; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2020-02-18 15:38:05 GMT; 6s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 18089 ExecStart=/etc/init.d/test start (code=exited, status=7)
    Tasks: 2
   CGroup: /system.slice/test.service
           ├─18096 /home/rocket/test -c                                                                                                                                                                                                  >
           └─18142 sleep 1

Feb 18 15:38:05 linux-c0a9 systemd[1]: test.service: Control process exited, code=exited status=7
Feb 18 15:38:05 linux-c0a9 systemd[1]: Failed to start LSB: Test.
Feb 18 15:38:05 linux-c0a9 systemd[1]: test.service: Unit entered failed state.
Feb 18 15:38:05 linux-c0a9 systemd[1]: test.service: Failed with result 'exit-code'.

journalctl показывает:

Feb 18 15:38:05 linux-c0a9 systemd[1]: Starting LSB: Test...
Feb 18 15:38:05 linux-c0a9 test[18089]: Starting test
Feb 18 15:38:05 linux-c0a9 test[18089]: 18/02/2020-15:38:05 ...
Feb 18 15:38:05 linux-c0a9 test[18089]: ..failed
Feb 18 15:38:05 linux-c0a9 systemd[1]: test.service: Control process exited, code=exited status=7
Feb 18 15:38:05 linux-c0a9 systemd[1]: Failed to start LSB: Test.
Feb 18 15:38:05 linux-c0a9 systemd[1]: test.service: Unit entered failed state.
Feb 18 15:38:05 linux-c0a9 systemd[1]: test.service: Failed with result 'exit-code'.

Кто-нибудь знает почему это не удается и как его остановить?

Я использую только SHC, чтобы остановить пользователей, редактирующих скрипт, но не для какой-либо безопасности и т. д. c.

Спасибо

1 Ответ

1 голос
/ 18 февраля 2020

Я думаю, что, возможно, решил это.

Мой скрипт в /etc/init.d вызывал /home/rocket/test

Когда это bash файл, то все нормально, когда он скомпилирован, он перестает работать.

Чтобы заставить его работать, я изменил тест, чтобы всегда быть bash файлом, который вызывает скомпилированный тест, который находится в /home/rocket/bin/test

...