Let's say you have a SysV Init Script
named foo
-
Copy the file to
/etc/init.d/foo
-
Enable the SysV service:
chkconfig --add foo
-
Enable the SysV service:
chkconfig foo on
-
Start the service:
service foo start
. After this, systemd-sysv-generator will generate this file/run/systemd/generator.late/foo.service
, copy this file to/etc/systemd/system
by running:cp /run/systemd/generator.late/foo.service /etc/systemd/system/foo.service
-
Edit
/etc/systemd/system/foo.service
by runningsystemctl edit foo.service
, add in the following line tofoo.servie
(this makes the service installable)[Install] WantedBy=multi-user.target
-
Enable the service:
systemd enable foo.service
-
(Optional) You can then remove the SysV script by running
chkconfig foo off && chkconfig --del foo
post is really good,it helped me a lot
issue is that now all processes in user.slice got mercilessly killed even if your services in sysVinit was desgined to run first when you initate reboot or shutdown.
I have tried to put After=user.slice in [unit] section and WantedBy=user.slice in [Install] but no luck
Any suggestion if i want my service to initiated before processes in user.slice killed.
[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/rc.d/init.d/dbtiershut
Description=LSB: stop ORACLE DB Tier Databases in /etc/instances
Before=runlevel2.target
Before=runlevel3.target
Before=runlevel4.target
Before=runlevel5.target
Before=shutdown.target
After=network-online.target
After=ohasd.service
After=splunk.service
Conflicts=shutdown.target
After=user.slice
[Service]
#Type=forking
Type=simple
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/etc/rc.d/init.d/dbtiershut start
ExecStop=/etc/rc.d/init.d/dbtiershut stop
[Install]
WantedBy=user.slice.target multi-user.target