Лучший способ создать «прерываемый» исполняемый файл

Статический IP-адрес и файл «hosts»

Установите IP-адрес устройства на статический IP и добавьте этот IP и имя хоста в файл / etc / hosts . Например,

192.168.100.22    hyperfang.localnet.lan    hyperfang

Файл конфигурации SSH

Кроме того, как было указано в другой ответ, добавление файла / опции конфигурации SSH позволит вам указать разные элементы; например пользователь, порт и т. д.

$ cat ~/.ssh/config

Host 192.168.100.22
   User pi

Скрипт

Создайте простой скрипт или псевдоним , который вызывает функцию. Очевидно, что если другие люди также должны использовать его для облегчения этого процесса, то сценарий - это правильный путь; поскольку псевдоним является локальным для вашей системы и / или пользователя.

alias sspi='ssh pi@192.168.100.22'

Для сценария, который можно распространять, если / когда необходимо, это очень простая попытка:

#!/bin/bash

# Optional Message
echo 'This script is about to connect to...'

# Prompt for confirmation
read -p "Are you sure? " -n 1 -r
echo    # (optional) move to a new line
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
    exit 1
fi

xterm -e ssh pi@192.168.100.22
3
17.10.2016, 11:49
2 ответа

Это немного зависит от того, заботитесь ли вы только о сбое самой программы или сбоях всей системы.

В первом случае вы можете записать свежие данные в новый файл, а затем переименовать его в настоящее имя только после того, как закончите запись. Таким образом, файл будет содержать либо предыдущие, либо новые данные контрольной точки, но не только частичную информацию. Хотя частичная запись должна быть достаточно редкой в ​​любом случае, если мы предполагаем, что сам код контрольной точки вряд ли выйдет из строя, и если соответствующие сигналы перехватываются, чтобы убедиться, что программа полностью сохраняет новую контрольную точку перед выходом.(В дополнение к SIGINT , я думаю, вам лучше поймать SIGHUP и SIGTERM .)

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

5
27.01.2020, 21:10

Вы можете поймать сигнал SIGINT , который отправляется процессу при нажатии Ctrl-C с помощью обработчик сигналов. Тогда процесс не прекращается сразу, а вызывается обработчик сигнала. Затем в обработчике сигналов вы можете записать результаты в файл. Это общая идея, на практике вы можете позаботиться о некоторых более мелких деталях.

4
27.01.2020, 21:10

Теги

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