Справка, диагностирующая службу поддержки

Я хочу установить свою машину рабочий Сервер Ubuntu для автоматического выполнения abcde когда диск вставляется.

  • /usr/local/bin/discready возвраты 0, когда диск ожидает, чтобы быть считанным, возвраты, ненулевые иначе
  • /usr/local/bin/autorip выполнения discready, проверки на 0 кодов выхода каждые 15 секунд и выполнения abcde когда то условие соблюдают.
  • /etc/systemd/system/autorip.service был создан с помощью инструкций из этой статьи

/usr/local/bin/discready сценарий:

#!/usr/bin/python3
# usage: DEVICE=/dev/sr0 discready

import fcntl
import os
import sys

DEFAULT_DEVICE = '/dev/cdrom'
STATUSES = ['NA', 'NO_DISK', 'OPEN', 'READING', 'DISC']

def drive_status(device):
    # https://superuser.com/a/1367091/1001393
    file = os.open(device, os.O_RDONLY | os.O_NONBLOCK)
    status = fcntl.ioctl(file, 0x5326)
    os.close(file)
    return status

if __name__ == '__main__':
    device = os.environ.get('DEVICE', DEFAULT_DEVICE)
    status_num = drive_status(device)
    status = STATUSES[status_num]

    if status_num == STATUSES.index('DISC'):
        sys.exit(0)

    print(f'Device: {device}, Status: {status}')
    sys.exit(status_num)

/usr/local/bin/autorip сценарий:

#!/usr/bin/env bash
# wait for discready to return a zero exit code, run abcde

while true; do
  discready
  result=$?
  [ $result -eq 0 ] && abcde -N
  sleep 15
done

/etc/systemd/system/autorip.service

Description=autorip
After=network.target

[Service]
Type=simple
User=rd
WorkingDirectory=/home/rd
ExecStart=/home/rd/autorip
Restart=always

[Install]
WantedBy=multi-user.target

вывод systemctl status autorip.service

● autorip.service - autorip
   Loaded: loaded (/etc/systemd/system/autorip.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2019-02-24 05:22:36 UTC; 18min ago
  Process: 20642 ExecStart=/home/rd/autorip (code=exited, status=203/EXEC)
 Main PID: 20642 (code=exited, status=203/EXEC)

Feb 24 05:22:36 kingwin systemd[1]: autorip.service: Main process exited, code=exited, status=203/EXEC
Feb 24 05:22:36 kingwin systemd[1]: autorip.service: Failed with result 'exit-code'.
Feb 24 05:22:36 kingwin systemd[1]: autorip.service: Service RestartSec=100ms expired, scheduling restart.
Feb 24 05:22:36 kingwin systemd[1]: autorip.service: Scheduled restart job, restart counter is at 5.
Feb 24 05:22:36 kingwin systemd[1]: Stopped autorip.
Feb 24 05:22:36 kingwin systemd[1]: autorip.service: Start request repeated too quickly.
Feb 24 05:22:36 kingwin systemd[1]: autorip.service: Failed with result 'exit-code'.
Feb 24 05:22:36 kingwin systemd[1]: Failed to start autorip.

autorip работы точно, как я хочу при выполнении в терминале. Попытка превратить это на службу состоит в том, где я становлюсь сбитым с толку. Это, потому что discready возвращает ненулевой код выхода? Любые советы по устранению неисправностей или указатели значительно ценились бы.

1
задан 24 February 2019 в 08:56

1 ответ

У меня был путь неправильно в моем сервисе.

Description=autorip
After=network.target

[Service]
Type=simple
User=rd
WorkingDirectory=/home/rd
ExecStart=/usr/local/bin/autorip  # was /home/rd/autorip
Restart=always

[Install]
WantedBy=multi-user.target
1
ответ дан 7 December 2019 в 15:07

Другие вопросы по тегам:

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