exec /home/minecraft/server/startup-server.sh > /dev/null 2>&1 & echo $!
дает вам PID startup-server.sh
, который закрывается почти сразу. Но вам нужен PID
/usr/bin/java -Xmx4096M -Xms4096M -jar minecraft_server.jar nogui
Для вашего подхода к работе нужно
exec /usr/bin/java -Xmx4096M -Xms4096M -jar minecraft_server.jar nogui
Кроме того, if [ -f $PID_PATH_NAME ]
недостаточно. Вы всегда должны проверять, что процесс все еще существует и что он правильный.
Вместо этого может иметь смысл использовать что-то вроде startproc
.
Настройка пользователя-супервизора и пароля ограничит доступ любого другого пользователя к элементам меню, редактированию элементов меню и использованию консоли grub. Добавление --unrestricted
кmenuentry
позволяет любому пользователю использовать этот пункт меню без ввода имени пользователя/пароля, а добавление --users
со списком имен пользователей позволяет дополнительным пользователям получить доступ к menuentry
.
Для минимальной настройки вам необходимо добавить суперпользователя с паролем и добавить --unrestricted
к menuentry
в /etc/grub.d/30_os_prober
, который генерирует записи меню Windows.
Отредактируйте /etc/grub.d/30_os-prober
, найдите menuentry
, отвечающую за записи Windows, и добавьте --unrestricted
в этот пункт меню. В моем случае я искал строку Windows
и редактировал следующую строку menuentry
. Отредактированный блок теперь выглядит так:
cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --unrestricted $CLASS --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
EOF
Добавьте свои пароли в конец/etc/grub.d/30_os-prober
:
cat << EOF
set superusers="freddy"
password freddy 1234
EOF
Обратите внимание, что не имеет значения, какой файл конфигурации в /etc/grub.d/
мы используем для наших паролей. Вместо этого мы могли бы также использовать 00_header
или 10_linux
.
Если вы хотите зашифровать свой пароль, запустите grub-mkpasswd-pbkdf2
, дважды введите свой пароль и используйте сгенерированную строку grub.pbkdf2.sha512.10000.<a_very_long_string>
в качестве пароля. Ввод пароля должен начинаться с password_pbkdf2
вместо password
:
password_pbkdf2 freddy grub.pbkdf2.sha512.10000.68B90AFC[...]86858AF939
Выполнить
sudo update-grub
, чтобы обновить grub и проверить, имеет ли сгенерированная запись Windows в /boot/grub/grub.cfg
флаг --restricted
. Сгенерированный блок30_os-prober
-должен выглядеть примерно так:
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 10 (on /dev/sda1)' --unrestricted --class windows --class os $menuentry_id_option 'osprober-chain-A25E43975E436361' {
insmod part_msdos
insmod ntfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 A25E43975E436361
else
search --no-floppy --fs-uuid --set=root A25E43975E436361
fi
parttool ${root} hidden-
drivemap -s (hd0) ${root}
chainloader +1
}
set superusers="freddy"
password freddy 1234
### END /etc/grub.d/30_os-prober ###
Перезагрузите и проверьте.
Ссылки по теме: