Is there a command to list services that run on startup? I imagine it would involve parsing /etc/init.d/
, and the various /etc/rc.*
directories.
9 Answers
The quick answer is: It depends on your init
system.
The long answer is: For current versions of Ubuntu, you probably have a mix of Upstart, and SystemV. Newer versions of Ubuntu after 15.04 "Vivid Vervet" (and other Linux distros like RHEL/CentOS 7) are moving to use SystemD.
Upstart
To list all services:
sudo initctl list
To list all Upstart services and run initctl show-config
on them, this one-liner may be helpful:
sudo initctl list | awk '{ print $1 }' | xargs -n1 initctl show-config
System V
To list all services:
sudo service --status-all
OR:
# for init scripts:
ls /etc/init.d/
# for runlevel symlinks:
ls /etc/rc*.d/
SystemD
- SystemD for Upstart Users
- FedoraProject SystemD Documentation
- RHEL 7: Managing Services with SystemD
- RedHat: SystemD Overview
To list all services:
sudo systemctl --all list-unit-files --type=service
OR:
ls /lib/systemd/system/*.service /etc/systemd/system/*.service
-
19
-
4
service --status-all
does NOT show whether services are enabled to start on boot, at least not on Ubuntu 16. It shows whether services are currently running or not.– WildcardApr 18, 2019 at 21:35 -
1I had to
sudo service --status-all
to get all of the services to show up. A few were hidden when I only ranservice --status-all
on a non-root account. May 23, 2019 at 16:30 -
@Phlucious : Thanks for mentioning that. I assumed it was well known that these commands are usually run as root (
systemctl
,service
,initctl
...) as they are usually considered system administration commands. Jun 11, 2019 at 19:56 -
You can simply use the initctl list
shell command to list the contents of /etc/init
rather than the suggested dbus-send
command.
-
12Does this work in Ubuntu 18.04? I get "initctl: command not found" (in bash) Aug 15, 2019 at 19:12
-
8
-
4@RémyHosseinkhanBoucher For more recent version of Ubuntu askubuntu.com/a/1167921/988056– AppyGGMar 3, 2020 at 8:41
For Ubuntu 18.04 use :
systemctl list-units --type=service
instead of initctl
.
Since Ubuntu 16.04, initctl
has been replaced by systemd
(source, in French).
If it can help @sanjay-manohar.
The /etc/init.d
and /etc/rc.*
directories have been superseded by the 'upstart
' init tool. Although scripts in these directories will be executed as expected, the new method for running things on init is defined by files in /etc/init/
You can list all of the upstart jobs with by querying upstart over dbus:
dbus-send --print-reply --system --dest=com.ubuntu.Upstart \
/com/ubuntu/Upstart com.ubuntu.Upstart0_6.GetAllJobs
You may have to change 0_6
to reflect the version of upstart you have. This command works on my lucid install.
-
3@Eric H: Could your set the answer below as correct instead -
initctl list
is much nicer than this dbus command. I'd like to leave this answer here for reference (rather than deleting it completely) though. Feb 24, 2011 at 4:48
If you want a nice graphical representation of services and time it takes to boot try:
sudo apt install bootchart
For systemd (since 16.04) try systemd-bootchart instead:
sudo apt install systemd-bootchart
Id use initctl show-config <servicename>
to really get the details of when/if your service will start during boot.
Like so:
$ initctl show-config myservice
myservice
start on runlevel [2345]
stop on runlevel [!2345]
Or for NFS4 idmap-daemon:
$ initctl show-config idmapd
idmapd
start on (local-filesystems or mounting TYPE=nfs4)
stop on runlevel [06]
chkconfig is only preferable on RedHat based systems imho.
-
1This is the correct answer. I have no idea why all the wrong and incomplete answers are so highly upvoted.– CerinSep 8, 2016 at 15:35
-
1This doenst work for people using SysV, I agree this it a good answer but it is incomplete. Dec 12, 2016 at 12:59
On 12.04 we could use:
sudo apt-get install chkconfig
chkconfig --list
but it was removed in 12.10.
Sample output:
acpi-support 0:off 1:off 2:on 3:on 4:on 5:on 6:off
acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
apparmor 0:off 1:off 2:off 3:off 4:off 5:off 6:off S:on
-
2
-
@A.B. thanks for letting me know! It is rare for downvoters to comment nowadays: it requires courage and allows me to learn. updated with the version it works in. Apr 24, 2015 at 7:58
-
On Precise: packages.ubuntu.com/precise/chkconfig Apr 24, 2015 at 7:59
Besides system services and scripts under:
/etc/init.d/
/lib/systemd/system/
/etc/systemd/system/
There are probably AutoStart Applications too, for example:
find / -name "*autostart*"
ls -1 "/etc/xdg/autostart" "/home/$USER/.config/autostart" "/usr/share/gdm/autostart" "/usr/share/gnome/autostart"
Using gawk:
ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}'
Sample output:
$ ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}' | egrep README
README 0,1,2,3,4,5,6,S