Перейти к содержанию

Сниппеты

Включить показ выполняемых команд

В начале скрипта добавить 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

Про выполнение кода через $

Допустим, у нас есть вот такая штука, нам нужно записать в переменную данные:

local CURRENT_ID=$($LAST_UPDATE | jq '.update_id')
Но вот беда! Из-за того что после равно стоит $, выхлоп попытается выполниться. Чтобы обойти это, можно использовать echo. Он просто засунет выхлоп в переменную. Таким образом, это должно выглядеть так:
local CURRENT_ID=$(echo $LAST_UPDATE | jq '.update_id')

Откатать все файлы каталоге, вывести имя и поискать в них с помощью grep

for filename in *; do echo "FILE: $filename "; cat $filename | grep taxcom; done;

Скачать последний релиз с гитхаба

Требует 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

Обновление дисков при подключении "на горячую"

Выполняем следующий скрипт

#!/bin/bash
for i in /sys/class/scsi_host/host*; do 
echo "- - -" > $i/scan; 
done

Если просто подкинули места на диск, то можем попробовать вот так:

echo 1 > /sys/block/sdb/device/rescan

Вместо sdb наш диск