Linux常用命令--常用设置
摘要
-
安装完linux后,一些常用的设置可以方便我们今后的使用,比如关闭SELinux,增加文件描述符限制,等等。
-
本文基于CentOS8。
关闭SELinux
-
SELinux(Security-Enhanced Linux)是一种基于安全策略的 Linux 安全模块,其主要目的是提供对各种应用程序和进程的更细粒度的访问控制。
-
SELinux 的安全方案主要基于以下两个策略:
- 强制访问控制(Mandatory Access Control, MAC):MAC 策略不允许用户在他们拥有的文件和进程上设置安全访问控制,而是根据一个由系统管理员和/或操作系统开发商定义的集中安全策略进行访问控制。
- 类型强制访问控制(Type Enforcement):通过将文件、目录和其他资源分配到类型,并定义它们之间的交互,限制进程在资源之间的信息流。
-
在实际工作中,SELinux 可以用来阻止或限制恶意或损坏的应用程序对系统造成的损害。当配置正确时,SELinux 提供的强大安全机制可以显著提高系统的安全性。
-
但是,SELinux 也可能会带来一些问题,例如,它可能会导致某些应用程序无法正常工作,或者它可能会在某些情况下导致性能下降。因此,许多 Linux 发行版默认会关闭 SELinux,以避免这些问题。
-
通过以下命令,可以查看当前的 SELinux 状态:
1 | # 如果当前状态为 Enforcing,表示 SELinux 已启用,否则为 Disabled。 |
-
临时关闭 SELinux,可以使用以下命令:
1 | $ setenforce 0 |
-
永久关闭 SELinux,可以使用以下命令:
1 | $ vi /etc/selinux/config |
-
临时开启 SELinux,可以使用以下命令:
1 | $ setenforce 1 |
-
永久开启 SELinux,可以使用以下命令:
1 | $ vi /etc/selinux/config |
增加文件描述符限制
-
每个运行中的进程都有一个限制,即它可以同时打开的最大文件描述符数量。这个限制对于避免过度使用系统资源非常重要。然而,在某些情况下,你可能需要增加这个限制来满足应用的需求。
-
Linux 服务器默认的文件描述符限制为 1024,如果需要使用更多的文件描述符,可以使用以下命令来增加限制:
1 | # 临时设置,即刻生效 |
-
这样的设置既为 root 用户设置了文件描述符(句柄)的软硬限制数量为65535,也为系统中所有其他用户设置了同样的限制。所谓“软限制”是指用户可以达到但不能超过的限制,而“硬限制”是指系统设置的绝对限制。即软限制不能大于硬限制的值。
-
通过以下命令,可以查看当前的文件描述符限制:
1 | # 查看的是当前 bash 的“软”文件描述符限制 |
环境变量设置
-
一般我们设置环境变量时,是在
/etc/profile文件中设置,比如我们设置jdk的环境变量,可以这样设置:
1 | export JAVA_HOME=/usr/local/jdk1.8.0_181 |
-
然后执行以下命令,使环境变量生效:
1 | source /etc/profile |
-
但实际上,环境变量可以在
多个位置中设置,不同方式作用范围也不同
| 设置位置 | 作用范围 | 何时生效 | 是否推荐 |
|---|---|---|---|
/etc/profile |
所有用户(交互式 shell 登录) | 重新登录后 | ✅ 推荐系统级配置 |
/etc/profile.d/*.sh |
所有用户(交互式 shell 登录) | 重新登录后 | ✅ 推荐系统级可维护方式 |
/etc/environment |
所有进程(系统全局) | 立即生效(重新登录或重启) | ⚠️ 无 shell 特性,适合纯环境变量 |
~/.bash_profile |
当前用户(登录 shell) | 重新登录后 | ✅ 常用用户级设置 |
~/.bashrc |
当前用户(非登录 shell,如终端 tab) | 新开终端后 | ✅ 常用 |
/etc/bashrc |
所有用户(非登录 shell) | 新开终端后 | ⚙️ 一般不直接改 |
Systemd service 文件 (/etc/systemd/system/xxx.service) |
特定服务进程 | 服务重启后 | ✅ 推荐用于守护进程 |
临时命令行 export VAR=value |
当前 shell 会话 | 立即生效,关闭终端失效 | 🧪 临时调试用 |
/etc/profile.d
-
比如,创建一个名为
/etc/profile.d/my_env.sh的文件,然后将上面放在/etc/profile文件中的如下内容改放到这里:
1 | export JAVA_HOME=/usr/local/jdk1.8.0_181 |
-
然后执行以下命令,使环境变量生效:
1 | source /etc/profile |
/etc/environment
-
内容格式(注意:不能使用 $PATH 等 shell 变量语法):
1 | PATH="/usr/local/git/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" |
Systemd service 文件
-
比如,创建一个名为
/etc/systemd/system/xxx.service的文件
1 | # 在 [Service] 区段中添加 |
-
然后重启服务
1 | sudo systemctl daemon-reload |
注意:
- 当我们在设置环境变量是经常会操作
PATH,比如export PATH=$JAVA_HOME/bin:$PATH,假如我们将$PATH不小心写成了$PTAH,当时没有及时发现,并且保存后执行了立即生效命令,比如source /etc/profile,那么你会发现所有命令都失效了,因为$PATH被修改成了$PTAH,而$PTAH并不存在,所以所有命令都找不到了。 - 此时你想着改回
$PATH,但是vim命令找不到了,此时别慌,可以通过命令的全路径进行使用,比如/usr/bin/vim,实际上大部分的系统命令都在/usr/bin目录下。 - 修改正确后重新登录终端即可。