Рейтинг:0

jcmd работает в консоли, но не работает в скрипте

флаг in

Я злюсь на то, что должно быть простой задачей: запущен процесс Java, не хватает памяти и запускается скрипт.

SELinux это Отключено.

в setenv.sh:

-XX:OnOutOfMemoryError='/opt/alfresco/scripts/dumpNrestart.sh > /tmp/dumpNrestart.log 2>&1'

%alfresco ВСЕ= NOPASSWD: /opt/alfresco/java/bin/jcmd

#!/бин/ш -х
PIDDE=$(cat /opt/alfresco/tomcat/temp/catalina.pid)
/bin/rm -f /tmp/"$PIDDE".hprof
/бин/судо /бин/идентификатор
/bin/sudo /opt/alfresco/java/bin/jcmd "$PIDDE" GC.heap_dump /tmp/"$PIDDE".hprof
/opt/alfresco/tomcat/bin/shutdown.sh -force

++ кошка /opt/alfresco/tomcat/temp/catalina.pid
+ ПИДДЭ=11451
+ /bin/rm -f /tmp/11451.hprof
+ /opt/alfresco/java/bin/jcmd 11451 GC.heap_dump /tmp/11451.hprof
11451:
com.sun.tools.attach.AttachNotSupportedException: невозможно открыть файл сокета /proc/11451/root/tmp/.java_pid11451: целевой процесс 11451 не отвечает в течение 10500 мс или виртуальная машина HotSpot не загружена
        в jdk.attach/sun.tools.attach.VirtualMachineImpl.<init>(VirtualMachineImpl.java:100)
        в jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:58)
        на jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:207)
        в jdk.jcmd/sun.tools.jcmd.JCmd.executeCommandForPid(JCmd.java:114)
        на jdk.jcmd/sun.tools.jcmd.JCmd.main(JCmd.java:98)
+ /opt/alfresco/tomcat/bin/shutdown.sh -force

Я предполагаю, что это проблема разрешения/привилегии, но с судо Я думал, что закончил... но я не такой, как мы видим.

Любые идеи, что-то, что я мог бы попробовать?

Спасибо за ваше время, читая это!

Michael Hampton avatar
флаг cz
Как вы думаете, почему существует проблема с разрешением? В сообщении об ошибке говорилось: «целевой процесс 11451 не отвечает в течение 10 500 мс или виртуальная машина HotSpot не загружена».
флаг in
Привет, Майкл, есть кое-что (что-то, что я упускаю, может быть, не разрешения) о том, как вызывается jcmd: запуск сценария из bash всегда работает, но если он вызывается из JVM, это не так. Я не думаю, что это реальная проблема тайм-аута «10500 мс», потому что из консоли для создания дампа не требуется даже 5 дюймов, и он всегда создается.
Рейтинг:1
флаг fr

Попробуйте использовать & . Это заставит скрипт работать в фоновом режиме. И доступ будет.

-XX:OnOutOfMemoryError='sh /opt/alfresco/scripts/dumpNrestart.sh &'

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.