Сниппеты¶
Включить показ выполняемых команд¶
В начале скрипта добавить set -x
Про конструкцию вида somefunction || :¶
Конструкция вида somefunction || :
всегда будет возвращать нулевой код (успешное выполнение):
kiriharu@test:/mnt/c/$ `(true || :)` && echo $?
0
kiriharu@test:/mnt/c/$ `(echo || :)` && echo $?
0
kiriharu@test:/mnt/c/$ `(false || :)` && echo $?
0
Про выполнение кода через $¶
Допустим, у нас есть вот такая штука, нам нужно записать в переменную данные:
Но вот беда! Из-за того что после равно стоит $, выхлоп попытается выполниться. Чтобы обойти это, можно использовать echo. Он просто засунет выхлоп в переменную. Таким образом, это должно выглядеть так:Откатать все файлы каталоге, вывести имя и поискать в них с помощью grep¶
Скачать последний релиз с гитхаба¶
Требует wget, curl и jq.
wget $(curl -s https://api.github.com/repos/theAsmodai/metamod-r/releases/latest | jq -r ".assets[] | .browser_download_url")
Оставляем 5 последних лог-файлов, остальные удаляем¶
#!/bin/bash
servers_log_dirs=("/logs", "/logs2")
for srv_log_dir in ${servers_log_dirs[@]}; do
ls -tr $srv_log_dir | head -n -15 | grep gz | xargs -t -I {} rm $srv_log_dir/{}
done
Авторестарт Minecraft сервера¶
#!/bin/bash
MIN_MEMORY="2048m"
MAX_MEMORY="4096m"
SERVER_JAR_FILE="PaperSpigot.jar"
while true; do
for i in {1..5}; do
sleep 1
echo "Server restarting in $i/5 seconds, press Ctrl-C to interrupt"
done
java -Xms$MIN_MEMORY -Xmx$MAX_MEMORY -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -Dfile.encoding=UTF-8 -jar $SERVER_JAR_FILE
done
Обновление дисков при подключении "на горячую"¶
Выполняем следующий скрипт
Если просто подкинули места на диск, то можем попробовать вот так:
Вместо sdb наш диск