Difference between revisions of "Debian: rc.local"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "https://unix.stackexchange.com/questions/471824/what-is-the-correct-substitute-for-rc-local-in-systemd-instead-of-re-creating-rc As pointed out elsewhere, it becomes moderat...")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
https://unix.stackexchange.com/questions/471824/what-is-the-correct-substitute-for-rc-local-in-systemd-instead-of-re-creating-rc
+
* https://unix.stackexchange.com/questions/471824/what-is-the-correct-substitute-for-rc-local-in-systemd-instead-of-re-creating-rc
 +
* https://caklihat.com/baca/berita/menggunakan-rclocal-di-debian-10-buster
  
  
As pointed out elsewhere, it becomes moderately unclean to use rc-local.service under systemd.
+
Pada debian 10 tidak ditemukan adanya rc.local yang dungsinya biasanya untuk startup sebuah script tanpa repot membuat systemctl dan sebagainya.. jadi disini saya akan coba membuat rc.local kembali, yang pada debian terbaru sudah tidak ada atau mungkin sudah dihilangkan.. heheheh
  
It is theoretically possible that your distribution will not enable it. (I think this is not common, e.g. because disabling the same build option also removes poweroff / reboot commands that a lot of people use).
+
nano /etc/systemd/system/rc-local.service
The semantics are not entirely clear. Systemd defines rc-local.service one way, but Debian provides a drop-in file which alters at least one important setting.
 
rc-local.service can often work well. If you're worried about the above, all you need to do is make your own copy of it! Here's the magic:
 
  
  # /etc/systemd/system/my-startup.service
+
Isi dengan,
 +
 
 +
  [Unit]
 +
Description=/etc/rc.local
 +
ConditionPathExists=/etc/rc.local
 +
 
  [Service]
 
  [Service]
  Type=oneshot
+
  Type=forking
 +
ExecStart=/etc/rc.local start
 +
TimeoutSec=0
 +
StandardOutput=tty
 
  RemainAfterExit=yes
 
  RemainAfterExit=yes
  ExecStart=/usr/local/libexec/my-startup-script
+
  SysVStartPriority=99
 
   
 
   
 
  [Install]
 
  [Install]
 
  WantedBy=multi-user.target
 
  WantedBy=multi-user.target
  
I don't think you need to understand every single detail[*], but there are two things you need to know here.
+
Edit /etc/rc.locak
 +
 
 +
nano /etc/rc.local
  
You need to enable this with
 
  
systemctl enable my-startup.service.
+
Isi dengan (dan pastikan ada #!/bin/sh)
  
If your script has a dependency on any other service, including network-online.target, you must declare it. E.g. add a [Unit] section, with the lines Wants=network-online.target and After=network-online.target.
+
#!/bin/sh -e
 +
#
 +
# rc.local
 +
#
 +
# This script is executed at the end of each multiuser runlevel.
 +
# Make sure that the script will "exit 0" on success or any other
 +
# value on error.
 +
#
 +
# In order to enable or disable this script just change the execution
 +
# bits.
 +
#
 +
# By default this script does nothing.
  
You don't need to worry about dependencies on "early boot" services - specifically, services that are already ordered before basic.target. Services like my-startup.service are automatically ordered after basic.target, unless they set DefaultDependencies=no.
+
exit 0
  
If you're not sure whether one of your dependencies is an "early boot" service, one approach is to list the services that are ordered before basic.target, by running systemctl list-dependencies --after basic.target. (Note that's --after, not --before).
+
Lakukan
  
There are some considerations that I think also applied to pre-systemd rc.local:
+
chmod +x /etc/rc.local
 +
systemctl enable rc-local.service
 +
systemctl start rc-local.service
 +
systemctl status rc-local.service
  
You need to make sure your commands are not conflicting with another program that tries to control the same thing.
+
Cek statusnya bila sudah "active" silahkan edit rc.local nya untuk pengujian
It is best not to start long-running programs aka daemons from rc.local.
 
[*] I used Type=oneshot + RemainAfterExit=yes because it makes more sense for most one-shot scripts. It formalizes that you will run a series of commands, that my-startup will be shown as "active" once they have completed, and that you will not start a daemon.
 

Latest revision as of 09:50, 24 January 2024


Pada debian 10 tidak ditemukan adanya rc.local yang dungsinya biasanya untuk startup sebuah script tanpa repot membuat systemctl dan sebagainya.. jadi disini saya akan coba membuat rc.local kembali, yang pada debian terbaru sudah tidak ada atau mungkin sudah dihilangkan.. heheheh

nano /etc/systemd/system/rc-local.service

Isi dengan,

[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

Edit /etc/rc.locak

nano /etc/rc.local


Isi dengan (dan pastikan ada #!/bin/sh)

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0

Lakukan

chmod +x /etc/rc.local
systemctl enable rc-local.service
systemctl start rc-local.service
systemctl status rc-local.service

Cek statusnya bila sudah "active" silahkan edit rc.local nya untuk pengujian