The system script posted is actually a fairly bad example because that one just use apache to manage the process. Where systemd shines is where we don't need specific purpose binaries to manage each service.
[Unit]
Description=A network traffic probe similar to the UNIX top command
Requires=network.target
ConditionPathExists=/var/lib/ntop/ntop_pw.db
After=syslog.target network.target
[Service]
Environment=LANG=C
ExecStart=/usr/bin/ntop -i eth0 -w 3000
Type=simple
StandardError=syslog
[Install]
WantedBy=multi-user.target
Note the lack of pid files of stop commands etc...
> And here's the best part! If the shell script seems to be broken for some reason, I can debug it! I can stuff some stdout or stderr in there; I can call my own binaries or reference other shell scripts; I can do programmer-y things to it!
systemd captures stdout/stderr and the exit code you rarely need to run it outside of systemd. Most of the time the ExecStart command would do the trick.
> I'm really beginning to think this whole systemd thing is actually a culture war between two different generations of sysadmins. The older, bearded generation wants to stay with the thing that has always worked out for them in the end, and the younger, nicer-smelling generation wants to do something new because they haven't made enough mistakes yet.
Or alternatively they've seen the millions of issues you can get with sysvinit scripts that aren't perfect and decided we can do something better.