Debian – Should “invoke-rc.d” or “service” be used to restart services

debianinit-scriptlinuxlinux-mintservices

I'm confused as to which is best and in which circumstances:

invoke-rc.d apache2 restart

or

service apache2 restart

Is there a real difference?

man service has the following interesting bit:

service runs a System V init script in as predictable environment as possible, removing most environment variables and with current working directory set to /.

I'm interested mainly in Debian, but also Mint (also based on Debian).

Best Answer

The official Debian wiki page on daemons says to use service:

# service ssh restart
Restarting OpenBSD Secure Shell server: sshd.

Functionally service and invoke-rc.d are mostly equivalent, however:

  • invoke-rc.d is the preferred command for packages' maintainer scripts, according to the command's man page
  • service has a unique --status-all option, that queries status of all available daemons

It seems like service is the user-oriented command, while invoke-rc.d is there for other uses.