一,centos8不建議寫rc.local,默認啟動時執行的命令放到何處?
以前我們會把linux開機執行的命令寫入到/etc/rc.local
在centos8上系統不再建議我們寫入到rc.local
[root@yjweb log]# more /etc/rc.local #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file.
rc.local里面的comment說了,建議創建systemd service
說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest
對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/
說明:作者:劉宏締 郵箱: 371125307@qq.com
二,看一下系統默認/etc/rc.local的情況
[root@yjweb log]# ll /etc/rc.local lrwxrwxrwx 1 root root 13 Jul 1 2019 /etc/rc.local -> rc.d/rc.local [root@yjweb log]# ll /etc/rc.d/rc.local -rw-r--r--. 1 root root 474 Jul 1 2019 /etc/rc.d/rc.local
說明:可以看到:當前的/etc/rc.local是 /etc/rc.d/rc.local文件的一個符號鏈接
三,配置rc-local服務
我們在這里配置一個例子:開機后自動關閉透明大頁內存:transparent_hugepage
1,編輯/etc/rc.d/rc.local文件
[root@yjweb log]# vi /etc/rc.d/rc.local
增加一行:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
2,加入可執行屬性
[root@yjweb log]# chmod +x /etc/rc.d/rc.local [root@yjweb log]# ll /etc/rc.d/rc.local -rwxr-xr-x 1 root root 530 Mar 11 14:44 /etc/rc.d/rc.local
3,配置rc.local服務
[root@yjweb log]# vi /usr/lib/systemd/system/rc-local.service
內容如下:
[Unit] Description=/etc/rc.d/rc.local Compatibility Documentation=man:systemd-rc-local-generator(8) ConditionFileIsExecutable=/etc/rc.d/rc.local After=network.target [Service] Type=forking ExecStart=/etc/rc.d/rc.local start TimeoutSec=0 RemainAfterExit=yes GuessMainPID=no [Install] WantedBy=multi-user.target
說明:最后的install一段不可少,
如果當前的service文件中沒有這段,需手動添加
否則服務啟動時會報錯
3,啟動
[root@yjweb log]# systemctl daemon-reload
[root@yjweb log]# systemctl start rc-local
4,使開機能自動啟動:
[root@yjweb log]# systemctl enable rc-local
Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /usr/lib/systemd/system/rc-local.service.
四,測試:換一台機器測試重啟后是否可自動生效
先查看未配置前的系統默認設置
[root@localhost ~]# more /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
做完對rc.local的配置后重啟機器
[root@localhost ~]# reboot
機器啟動后查看,說明rc-local服務起作用了
[root@localhost liuhongdi]# more /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
五,查看本地centos的版本
[root@yjweb ~]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)