Hello!

Risto, Thanks for the you tips, the problem was solved. For systemd in service 
settings added “KillMode=process”, this makes it possible to kill only the 
basic process and does not affect the child processes.

$ cat /lib/systemd/system/sec@.service
[Unit]
Description=Simple Event Correlator (instance %I)
After=syslog.target

[Service]
Type=forking
PIDFile=/run/sec-%I.pid
ExecStart=/usr/bin/sec -detach -pid=/run/sec-%I.pid -conf=/etc/sec/%I.sec 
--dump=/tmp/sec-tomcat.dump --nochildterm -log=/var/log/sec-%I --intevents 
$OPTIONS_%I
EnvironmentFile=/etc/sysconfig/sec
KillMode=process

[Install]
WantedBy=multi-user.target



-- 
WBR
Yuri Kazankin
yuni...@yahoo.com

> On 2 авг. 2016 г., at 0:53, Risto Vaarandi <risto.vaara...@gmail.com> wrote:
> 
> hi Yuri,
> if your platform is Linux, you can figure out the parent process ID by 
> running "ps -ef" and inspecting the third column. This command lists all 
> processes on your system, so you would probably need to grep the output for 
> relevant processes (e.g., ps -ef | grep tomcat). When you shut down sec, 
> please also inspect its log, because sec reports the ID of every process it 
> sends the TERM signal. The relevant sec log messages look like follows:
> SIGTERM received: shutting down SEC
> Sending SIGTERM to process 20879
> 
> Nevertheless, after having a look into the scripts, I have some doubts if the 
> application is running as sec child process, since from the shell process 
> that runs restart-tomcat.sh you are invoking startup.sh which creates another 
> process (that process should become a grandchild of sec which no longer gets 
> SIGTERM). Since you are experiencing this problem when using systemctl 
> command for restarting sec, maybe this issue is related to how systemd shuts 
> down a service. After browsing a web, I run into couple of threads that 
> describe a similar scenario, for example:
> http://stackoverflow.com/questions/32208782/cant-detach-child-process-when-main-process-is-started-from-systemd
>  
> <http://stackoverflow.com/questions/32208782/cant-detach-child-process-when-main-process-is-started-from-systemd>
>  
> 
> In order to find out if you are experiencing a similar problem, you could try 
> stopping sec in two ways -- first by shutting it down manually by sending 
> TERM signal to sec process, and then stopping it with 'systemctl stop 
> sec@tomcat'. If your application stays alive in the first case but dies in 
> the second case, it has to be systemd which stops your application alongside 
> with sec, probably because your application was started by sec and belongs to 
> the same process group. Nevertheless, if systemd uses the TERM signal for 
> taking down your application, you could still use the trap '' 15 statement in 
> the restart-tomcat.sh script for ignoring this signal. However, I would 
> recommend to create systemd service files for your application, so that you 
> could start and stop it with systemctl. Invoking "systemctl restart ..." 
> instead of restart-tomcat.sh would probably solve the problem, since systemd 
> is made aware that your application is a separate service.
> 
> kind regards,
> risto
> 
> 2016-08-01 14:14 GMT+03:00 Yuri Kazankin <yuni...@yahoo.com 
> <mailto:yuni...@yahoo.com>>:
> Hi Risto,
> 
> Sec process is seen as:
> /usr/bin/perl -w /usr/bin/sec -detach -pid=/run/sec-tomcat.pid 
> -conf=/etc/sec/tomcat.sec --debug=6 --dump=/tmp/sec-tomcat.dump --nochildterm 
> -log=/var/log/sec-tomcat --nointevents -input=/var/log/tomcat/catalina.out
> 
> Unfortunately, --nochildterm option does not fix the problem. I cannot find 
> the dump file, I tried to specify it in the start script 
> (--dump=/tmp/sec-tomcat.dump), but without result.
> 
> The command "ps wuaxf" does not reveal how the child process:
> # ps wuaxf
> root     31114  0.1  0.2 150232  9724 ?        S    13:42   0:01 
> /usr/bin/perl -w /usr/bin/sec -detach -pid=/run/sec-tomcat.pid 
> -conf=/etc/sec/tomcat.sec --debug=6 --dump=/tmp/sec-tomcat.dump --nochildterm 
> -
> root     31214  4.8  6.8 3756928 266000 ?      Sl   13:44   0:39 
> /opt/java-8-sun/jre/bin/java 
> -Djava.util.logging.config.file=/opt/tomcat-7.0.55/conf/logging.properties 
> -Djava.util.logging.manager=org.apache
> 
> In my restart-tomcat.sh: 
> kill -9 `cat /run/tomcat-7.0.55.pid` ; sleep 5 ; 
> /opt/tomcat-7.0.55/bin/startup.sh
> 
> In the attachment native scripts of Apache Tomcat: startup.sh and catalina.sh
> 
> Trap will try if nothing else helps.
> 
> Can you something else advise?
> 
> 
> 
> 
> 
> -- 
> WBR
> Yuri Kazankin
> yuni...@yahoo.com <mailto:yuni...@yahoo.com>
>> On 31 июля 2016 г., at 22:23, Risto Vaarandi <risto.vaara...@gmail.com 
>> <mailto:risto.vaara...@gmail.com>> wrote:
>> 
>> hi Yuri,
>> my apologies for not answering earlier -- your e-mail landed in my spam 
>> folder initially :(
>> 
>> I am suspecting that your application is started in a way which makes it a 
>> child process of sec. However, when sec shuts down, it sends the TERM signal 
>> to all its child processes by default. If the shell process that is 
>> executing the content of /opt/scripts/restart-tomcat.sh is still running, 
>> this process will get the TERM signal as well. Therefore, if the application 
>> was started with the shell 'exec' directive that replaces the shell process 
>> with the application process, it is actually your application which gets the 
>> TERM signal.
>> 
>> In order to find out whether your application is running as a child process 
>> of sec, send the USR1 signal to the sec process which creates the dump file 
>> (by default located at /tmp/sec.dump). This file contains detailed 
>> information about internal state of sec, and also provides a list of all 
>> child processes.
>> 
>> If your application is indeed stopping because of the TERM signal from sec, 
>> there are couple of workarounds:
>> 1) start sec with the --nochildterm command line option which disables 
>> sending TERM to child processes,
>> 2) include a 'trap' statement in /opt/scripts/restart-tomcat.sh that would 
>> ignore the TERM signal (e.g., trap '' 15)
>> 
>> Also, if your application is terminating for other reasons than TERM signal 
>> from sec, can you share the content of /opt/scripts/restart-tomcat.sh?
>> 
>> Hope this helps,
>> risto
>> 
>> 
>> 
>> 2016-07-29 13:55 GMT+03:00 Yuri Kazankin <yuni...@yahoo.com 
>> <mailto:yuni...@yahoo.com>>:
>> Hello!
>> 
>> I have a problem with sec 2.7.10
>> 
>> I created the instance:
>> # cat /etc/sysconfig/sec
>> OPTIONS_tomcat="-input=/var/log/tomcat/catalina.out”
>> 
>> 
>> and configured via systemd
>> # cat /lib/systemd/system/sec@.service
>> [Unit]
>> Description=Simple Event Correlator (instance %I)
>> After=syslog.target
>> 
>> [Service]
>> Type=forking
>> PIDFile=/run/sec-%I.pid
>> ExecStart=/usr/bin/sec -detach -pid=/run/sec-%I.pid -conf=/etc/sec/%I.sec 
>> --debug=6 --nochildterm -log=/var/log/sec-%I --nointevents $OPTIONS_%I
>> EnvironmentFile=/etc/sysconfig/sec
>> 
>> [Install]
>> WantedBy=multi-user.target
>> 
>> 
>> My rules restart the application after the event in the log:
>> # cat /etc/sec/tomcat.sec
>> type=SingleWithSuppress
>> ptype=RegExp
>> pattern=(^.+OutOfMemoryError.+$)
>> desc=Tomcat restarted after OutOfMemoryError Exception
>> action=shellcmd /opt/scripts/restart-tomcat.sh
>> window=300
>> 
>> And it works great! But after the event, if I try to execute a restart of 
>> the instance (systemctl restart sec@tomcat), my application stops(((
>> I can not understand why this is happening and how to fix it ...
>> 
>> 
>> --
>> WBR
>> Yuri Kazankin
>> yuni...@yahoo.com <mailto:yuni...@yahoo.com>
>> 
>> 
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> Simple-evcorr-users mailing list
>> Simple-evcorr-users@lists.sourceforge.net 
>> <mailto:Simple-evcorr-users@lists.sourceforge.net>
>> https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users 
>> <https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users>
>> 
> 
> 
> 

------------------------------------------------------------------------------
_______________________________________________
Simple-evcorr-users mailing list
Simple-evcorr-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users

Reply via email to