1

Я пытаюсь настроить сценарий события apcupsd doshutdown для запуска определенной java-программы, которая в конце концов переводит в спящий режим все виртуальные машины и, наконец, саму основную систему.

/etc/apcupsd/doshutdown находится здесь:

[root@localhost apcupsd]# cat doshutdown
#!/bin/bash
#
# This shell script is placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when apcupsd
# thinks to shutdown the system
# Instead of shutdown we first hibernate all VMWare VMs and the the system

wall ${USER} "Hibernate of VMs and system begins now."

rm /var/log/apcupsd_doshutdown_error.log
/usr/bin/java -version 2>> /var/log/apcupsd_doshutdown_error.log
/usr/bin/java -Dlogback.configurationFile=/etc/apcupsd/BTool.xml -cp /etc/apcupsd/BTool-assembly-1.0.jar Shutdown hibernate NOFLAG 2>> /var/log/apcupsd_doshutdown_error.log

wall ${USER} "Hibernate done."

# Do not run default shutdown after this!!!
exit 99

Когда ИБП вынужден работать от батареи, DOSHUTDOWN (или apcupsd) печатает на стене

Power failure on UPS localhost.localdomain. Running on batteries.

root Hibernate of VMs and system begins now.

Battery time limit exceeded on UPS localhost.localdomain. Doing shutdown.

root Hibernate done.

apcupsd_doshutdown_error.log - это:

/etc/apcupsd/doshutdown: line 11: /usr/bin/java: Permission denied
/etc/apcupsd/doshutdown: line 12: /usr/bin/java: Permission denied

Итак, скрипт doshutdown запускается, но он не запускает Java-программу.

Java-разрешения:

lrwxrwxrwx. 1 root root 22 Sep 25 11:45 /usr/bin/java -> /etc/alternatives/java
lrwxrwxrwx. 1 root root 46 Sep 25 11:45 /etc/alternatives/java -> /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
-rwxr-xr-x. 1 root root 9488 Jan 21 20:25 /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Я могу запустить DOSHUTDOWN из терминала как обычный пользователь или как пользователь root, но он не запускается при запуске apcupsd от имени пользователя root.

Я могу запустить Java в терминале и версия

$ java -version
openjdk version "1.8.0_71"
OpenJDK Runtime Environment (build 1.8.0_71-b15)
OpenJDK 64-Bit Server VM (build 25.71-b15, mixed mode)

дистрибутив:

CentOS release 6.7 (Final)
Linux localhost.localdomain 2.6.32-573.18.1.el6.x86_64 #1 SMP Tue Feb 9 22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

В чем причина ошибки разрешения и как ее исправить?

РЕДАКТИРОВАТЬ: Добавлено больше разрешений Java, версия Java и дистрибутив. Добавлена java-версия в скрипт doshutdown и связанная с этим ошибка в журнале.

0