Просто сделайте функцию, делающую его для Вас. В ударе, например:
mkdircd(){ mkdir "$1" && cd "$1" ; }
пример
mkdircd hello
Это не тестируется в комбинации:
Добавьте правило udev к IMPORT{program}="/usr/local/sbin/unique-num /run/miner-counter 0 MINER_NUM"
для Ваших шахтеров.
Затем Вы могли использовать простой сценарий оболочки, что-то вроде этого несколько протестированная программа:
#!/bin/sh
if [ $# -ne 3 ]; then
echo "Usage: $0 data-file initial var-name" >&2
exit 1
fi
datfile="$1"
lockfile="$1.lck"
initial=$2
key="$3"
(
flock -x 9
num=$initial
if [ -e "$datfile" ]; then
read -r num < "$datfile"
fi
next=`expr $num + 1`;
echo $next > "$datfile"
echo "$key=$num"
) 9> "$lockfile"
Затем можно использовать это udev переменная среды для именования шахтеров.
Вопрос уже имеет принятый ответ, но я решил поделиться своим вариантом решения , предусмотренном derobert .
Мои требования были немного по-разному - в дополнение к предоставлению номеров «увеличения» индекса на новые устройства - я хотел повторные номера индекса, которые были отданы устройствами, которые были удалены из системы.
Правило UDEV для настройки переменной среды будет выглядеть что-то вроде этого:
IMPORT{program}="/usr/local/sbin/unique-num /dev miner MINER_NUM"
в моем решении, я не использую файл для отслеживания индекса, я просто цикл на основе существующих SymLink И найдите первый доступный индекс:
/ USR / LOCAL / SBIN / Unique-Num
Сценарий:
#!/bin/bash
if [ $# -ne 3 ]; then
echo "Usage: $0 location prefix var-name" >&2
exit 1
fi
location="$1"
prefix="$2"
key="$3"
needindex=1
index=0
while [ $needindex -eq 1 ]
do
if [ ! -e $location/$prefix$index ]; then
needindex=0
echo "$key=$index"
else
(( index++ ))
fi
done
Это будет, конечно, распечатать имя var с первым доступным индексом, например, если Эти SymLink уже существуют:
miner0
miner1
miner2
, а затем Miner1
отсоединяется от системы - мы остались с:
miner0
miner2
Запуск скрипта вернется:
MINER_NUM=1
... как Это сейчас первый доступный индекс .
/dev/btcminer/0
и/dev/btcminer/1
который является (немного настроенная версия), чем я был после. Спасибо за это! :-) – Mark Embling 15.12.2013, 15:36#!/bin/bash
также. По некоторым причинам,sh
требуемый была синтаксическая ошибка ("неожиданное слово"). Не знайте почему или чтоsh
находится под Ubuntu, но это решило ее. – Mark Embling 15.12.2013, 15:4016
s к9
s, затем это будет работать в/bin/sh
. По крайней мере, с тире. (/bin/sh в этой системе удар по некоторым причинам), – derobert 15.12.2013, 19:28