Linux 系统参数和变量配置

一、常见系统参数配置

(一)用户系统资源限制

文件路径:/etc/security/limits.conf

常见配置:

对appuser做资源限制
    appuser soft nofile 655360

对所有用户做资源限制
    * soft nofile 655360

对用户组做限制
    @student hard nofile 65535

类型:
    soft 超过阈值告警
    hard 真正的上限

命令:ulimit

ulimit -a 显示当前所有的资源限制
ulimit -H 设置硬件资源限制 必须卸载n参数前面
ulimit -S 设置软件资源限制
ulimit -n 设置进程最大打开文件描述符数
ulimit -f 设置可以建立的最大文件容量

注意:

  • 可以限制通过PAM登录的用户资源使用,但是不对系统服务生效
  • 动态的参数同样会写进/pro/sys 目录下
  • 很多软件都有推荐的ulimit配置

(二)内核参数配置

文件

内核静态参数配置 /etc/sysctl.conf

例如:

        在配置文件中追加:net.ipv4.ip_forward=1 

        sysctl -p /etc/sysctl.conf 使参数生效

命令

内核运行参数配置 sysctl

内核参数位置:/proc/sys 参数名称是以文件所在的路径,并将 '/' 以 '.' 来取代

例如:/proc/sys/net/ipv4/ip_forward的参数名称为net.ipv4.ip_forward

sysctl -w net.ipv4.ip_forward=1

等价于

echo 1 > /proc/sys/net/ipv4/ip_forward

注意:部分内核参数是不允许修改的,在没清楚参数作用前,变更要谨慎!!!


二、变量与环境变量

(一)变量

可以理解为临时的局部变量,有效范围小

设置变量
FIRST='Hello World!'

注意:
    1) 变量等号左右不能有空格
    2) 变量由字符和数字组成,但不能用数字开头
    3) 变量的内容可以用""和''组成,可以拼接和共用
        "" 内可以包含转义符
        '' 会原样输出,纯文本
        \ 在双引号内是转义字符

        `` 反单引号返回内容命令执行结果
        $() 同上,返回内容命令执行结果
    4) $变量名 取值
    5) 未定义的变量为空
案例:
# echo "$FIRST"            # 可以取值
Hello World!

# echo '$FIRST'            # 原样输出
$FIRST

# FIRST="Hello World!"     # ! 是特殊字符需要转义
bash: !": event not found
取消变量

unset FIRST

特殊变量
常用特殊变量

    $ 当前shell的PID
    ? 上一条命令的返回值,0是执行成功,其他值都是不成功

echo $$
echo $?
变量的剪切
用例:
time_env=`date "+%Y/%m/%d %H:%m:%S"`

echo $time_env
2023/12/26 17:12:16
从前往后剪切

    # :从第一个字符开始,尝试匹配正则表达式,去掉 <第一个完全满足的最小子串> 
        例:去掉符合 '*/' 正则表达式的第一个子串,最小匹配
        echo ${time_env#*/}
        12/26 17:12:16
    ## : 从第一个字符开始,尝试匹配正则表达式,去掉 <第一个完全满足的最大子串> 贪婪
        例:去掉符合 '*/' 正则表达式的第一个子串,贪婪匹配
        echo ${time_env##*/}
        26 17:12:16
从后往前剪切
    % :从右往左,尝试匹配正则表达式,去掉 <第一个完全满足的最小子串>
        echo ${time_env%:*}
        2023/12/26 17:12

    %% :从右往左,尝试匹配正则表达式,去掉 <第一个完全满足的最大子串> 贪婪
        echo ${time_env%%:*}
        2023/12/26 17
变量的替换
path 的变量内容内的 sbin 取代成大写 SBIN
    匹配的第一个替换
        echo ${PATH/sbin/SBIN}
    匹配的全部替换
        echo ${PATH//sbin/SBIN}
变量的缺省赋值

这个有用,但是我平时也不用

username=${username-root}    主要是 '-'
    解释:
        username 未设置时赋值root

username=${username:-root}   主要是 ':-'
    解释:
        username 未设置或为空时赋值为root

username=${username+root}    主要是 '+'
    解释:
        username 已设置或为空时替换成root

username=${username:+root}    主要是 ':+'
    解释:
        username 已设定为非空字符串时替换为root

var=${str=expr}              主要是 '=' 
    解释:
        str 未设置时,给str 和 var 都赋值expr
        str 为空时, 给var 赋值expr

var=${str:=expr}
    解释:
        str 未设置或为空,给str 和 var 都赋值expr
        str 已设置,给 var 赋值expr

(二)环境变量

分临时环境变量和永久环境变量,也存在所有用户共用和单用户可用的情况

注意:

使用export 声明后,变量就变成环境变量

PATH 追加内容必须要用 ':' 隔开,否则PATH变量异常会导致很多命令不可用,变更PATH要谨慎!不过不会影响內建命令的使用

PATH=$PATH:$new_env

案例:将PATH变量置为空(测试,慎用)
# export PATH=''
# ls
bash: ls: No such file or directory

此时内置命令可用,即不需要通过PATH找命令路径的命令
# export

临时环境变量退出,再登录就能恢复,注意不要在生产环境测试!!!

设置环境变量
临时环境变量
    export FIRST='Hello World!'

永久环境变量 (把上面临时的写入到配置文件,自动加载)
    1) 编辑全局环境变量并生效
        vi /etc/profile
        source /etc/profile
    2)编辑用户下环境变量
        vi ~/.bashrc
        source ~/.bashrc
        或
        vi ~/.profile
        source ~/.profile
环境变量加载顺序
login shell 登录进来 bash 依次加载顺序是:

    1) /etc/profile
    2) /etc/profile.d/*.sh
    3) /etc/locale.conf
    4) ~/.bash_profile
    5) ~/.bashrc
    6) /etc/bashrc
    7) 进入bash


nologin shell 登录进来 bash 依次加载顺序是:
    1) ~/.bashrc
    2) /etc/bashrc

当 ~/.bashrc 被删除后, 由于 PS1 变量没有被赋值,bash 就会如下显示:

-bash-4.2$  

可以从/etc/skel/.bashrc 拷贝再自定义恢复

(三)变量与环境变量区别

区别在于环境变量可以被子程序引用,而变量不行,变量可以粗略的理解为局部变量,环境变量可以粗略的理解为全局变量

(四)其他

系统运行时变量

        调整进程的oom_score,减小被OOM的概率 [-17, 15],-17表示禁止OOM kill

        cat /proc/$$/oom_adj   # 查看当前shell的oom参数

man proc

/proc/ 里面有很多有意思的东西,暂时没有研究,后续看过了再补充进来。

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值