[systemd-devel] Complicated SysVInit Migration

Andrei Borzenkov arvidjaar at gmail.com
Thu Jul 30 20:25:43 PDT 2015


В Thu, 30 Jul 2015 16:53:43 -0500
Lesley Kimmel <ljkimmel99 at hotmail.com> пишет:

> I can't really change anything about the way that the Node Manager does it's job. That all takes place outside of systemd. If I used the PIDFile option in the original systemd service (executing the WLST process), let's call this weblogic.service, and the PIDFile pointed to the PID file created by the final Java process, would that work or does the process that I'm ultimately starting have to descend directly from whatever it is that the unit file executes?

Process has to be part of cgroup of original systemd service; and for
all practical purposes this means it has to be direct descendant of one
of ExecStart* commands. There is no systemd API to move processes
between cgroups.

What exactly is wrong in how it behaves currently? It is no worse
than it was before, with sysvinit, right? Do you observe any problems?  

> 
> Date: Thu, 30 Jul 2015 23:47:03 +0300
> Subject: Re: [systemd-devel] Complicated SysVInit Migration
> From: grawity at gmail.com
> To: ljkimmel99 at hotmail.com
> CC: systemd-devel at lists.freedesktop.org
> 
> On Thu, Jul 30, 2015 at 9:40 PM, Lesley Kimmel <ljkimmel99 at hotmail.com> wrote:
> 
> 
> 
> All;
> 
> I'm struggling with figuring out how to migrate some SysVInit scripts to systemd. Specifically, this service launches WebLogic Managed Server (Java) instances Let me describe the process flow of my current service to you:
> 
> -The init service/script launches a Java process called WLST which executes a simple script
> -This WLST process connects to an already running Java process called the Node Manager and issues a start command for the application server it wishes to start
> -The Node Manager process executes a shell script as a subprocess. This shell script sets up a bunch of environment variables, etc.
> -Ultimately the shell script launches a Java process which is a child of the shell script.
> -When this Java process reports itself as running, the initial WLST Java process exits.
> -In the end the actual service/process that we started, and want to manage, is actually the GRANDCHILD of a completely separate process from the initial Java process that systemd launched. How, would systemd track that process?
> 
> systemd would see it as an extra process belonging to NodeManager.service, nothing more.
> If you want systemd to track it as an independent service, go back to step #3 (where the Node Manager executes a shell script), and make that shell script merely run "systemctl start ..." instead of creating the new instance directly. (Make a template foo at .service unit for the WLMS instances.)



More information about the systemd-devel mailing list