Linux常用的一些配置

date
Dec 23, 2021
slug
linux
status
Published
tags
Linux
Nginx
Springboot
summary
Linux
type
Post
 

用户相关

修改密码

创建用户

添加docker执行权限

禁止root用户远程登录

设置sudo -i

设置链接超时

su: Authentication failure问题

su命令不能切换root,提示su: Authentication failure,只要你sudo passwd root过一次之后,下次再su的时候只要输入密码就可以成功登录了。

修改hostname

离线下载yum包

应用场景
通常生产环境由于安全原因都无法访问互联网。此时就需要进行离线安装,主要有两种方式:源码编译、rpm包安装。源码编译耗费时间长且缺乏编译环境,所以一般都选择使用离线 rpm 包安装。
  1. 需要安装yumdownload软件
  1. destdir后要写下载的包放到的位置
  1. 后面跟下载的软件,这样就会把这个软件的依赖一同下载
可以使用“yum deplist”命令来查找 rpm 包的依赖列表。例如,要查找“ansible”rpm的依赖包:

方案一(推荐):repotrack

方案二:yumdownloader

方案三:yum 的 downloadonly 插件

注意

与 yumdownloader 命令一样,也是仅会将主软件包和基于你现在的操作系统所缺少的依赖关系包一并下载。

离线安装 rpm

参考资料
  • https://serverfault.com/questions/470964/yumdownloader-vs-repotrack

找不到命令了

 

设置静态ip

sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0

安装python3.10

 

find

 

文件统计

 
1、统计当前目录下文件的个数(不包括目录)
ls -l | grep "^-" | wc -l
2、统计当前目录下文件的个数(包括子目录)
ls -lR| grep "^-" | wc -l
3、查看某目录下文件夹(目录)的个数(包括子目录)
ls -lR | grep "^d" | wc -l
4、统计当前文件夹下叫某某的文件的数量
find . -name filename | wc -l
5、统计当前文件夹下指定类型的文件的数量
例如这里需要找 js 文件的数量:
find -name "*.js" | wc -l
6、 快速查看文件名
ll -1 -f
这里再对使用到的 3 个命令做个介绍。
1、ls -l
长列表输出该目录下文件信息(注意这里的文件是指目录、链接、设备文件等),每一行对应一个文件或目录,ls -lR 是列出所有文件,包括子目录。
2、grep “^-”
过滤ls的输出信息,只保留一般文件,只保留目录是 grep “^d”。
3、wc -l
统计输出信息的行数,统计结果就是输出信息的行数,一行信息对应一个文件,所以就是文件的个数。

安装Clash

 
启用 clash service:
去GitHub下载最新版yacd
/etc/clash 下的 config.yaml加入以下配置
重启服务
访问页面:ip:9090/ui就可以看到控制台了
proxy_on 开启代理 proxy_off 关闭代理
 
 

查看cpu信息

 
 

linux ulimit 和 fs.file-max

概要:
文件句柄:在 Linux 环境中,任何事物都是用文件来表示,设备是文件,目录是文件,socket 也是文件。用来表示所处理对象的接口和唯一接口就是文件。应用程序在读/写一个文件时,首先需要打开这个文件,打开的过程其实质就是在进程与文件之间建立起连接,句柄的作用就是唯一标识此连接。此后对文件的读/写时,目标文件就由这个句柄作为代表。最后关闭文件其实就是释放这个句柄的过程,使得进程与文件之间的连接断开。
 
Linux/proc/sys/fs/file-max 决定了当前内核可以打开的最大的文件句柄数。
linux系统默认open files数目为1024, 有时应用程序会报Too many open files的错误,是因为open files 数目不够。这就需要修改ulimit和file-max。特别是提供大量静态文件访问的web服务器,缓存服务器(如squid), 更要注意这个问题。 网上的教程,都只是简单说明要如何设置ulimit和file-max, 但这两者之间的关系差别,并没有仔细说明。
说明:
  1. file-max的含义。man proc,可得到file-max的描述: /proc/sys/fs/file-max This file defines a system-wide limit on the number of open files for all processes. (See also setrlimit(2), which can be used by a process to set the per-process limit, RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages about running out of file handles, try increasing this value: 即file-max是设置 系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。 也就是说,这项参数是系统级别的。
  1. ulimit Provides control over the resources available to the shell and to processes started by it, on systems that allow such control. 即设置当前shell以及由它启动的进程的资源限制。 显然,对服务器来说,file-max, ulimit都需要设置,否则就可能出现文件描述符用尽的问题

查看当前的值

这个值在kernel的文档里是这样描述的:
意思是file-max一般为内存大小(KB)的10%来计算,如果使用shell,可以这样计算:
一般我们不需要主动设置这个值,除非这个值确实较小(可能有各种其他原因导致file-max没有设置为内存的10%)

如何查看当前kernel的句柄:

file-nr在内核文档里得解释如下:
max-file:表示系统级别的能够打开的文件句柄①的数量。是对整个系统的限制,并不是针对用户的。 ulimit -n:控制进程级别(比如 Nginx 进程、MySQL 进程)能够打开的文件句柄的数量。提供对 shell 及其启动的进程的可用文件句柄的控制。这是进程级别的。 一边情况下,服务器上的 ulimit 都需要我们自己设置,而不能使用系统默认的,否则会出现文件描述符耗尽的问题。文件句柄达到上限之后的常见错误有:Too many open files 或者 Socket/File: Can’t open so many files 等。
查看 max-file
设置的方式有两种,一种是临时生效,重启后恢复默认。另一种永久生效。
file-max 的修改:
ulimit open files  修改:
附录: 附录1. 为了让一个程序的open files数目扩大,可以在启动脚本前面加上ulimit -HSn 102400命令。但当程序是一个daemon时,可能这种方法无效,因为没有终端。
附录2. 如果某项服务已经启动,再动态调整ulimit是无效的,特别是涉及到线上业务就更麻烦了。 这时,可以考虑通过修改/proc/’程序pid’/limits来实现动态修改!!!
 

s-tui 监控

首先保证有python环境
设置镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
python2 & python3
notion image
安装stress 查看电脑功耗
  • todo

linux shell脚本获取当前的ip

方法一:ifconfig -a

命令解释

  1. ifconfig -a 和window下执行此命令一样道理,返回本机所有ip信息
  1. grep inet 截取包含ip的行
  1. grep -v 127.0.0.1 去掉本地指向的那行
  1. grep -v inet6 去掉包含inet6的行
  1. awk { print $2} $2 表示默认以空格分割的第二组 同理 $1表示第一组
  1. tr -d "addr: 删除"addr:"这个字符串
notion image
 

多网卡情况

倘若有多个网卡,可能会出现多个不同网段的IP,这个时候如果还是执行上述命令就会返回多个IP,如下:
假设某个机器有192.*.*.8和10.*.*.*网段的IP,现在要实现不同网段的IP地址打印不同的输出,shell脚本如下

方法二:ip addr

 
 

字符串处理

最近写脚本,需要对脚本中函数传递的路径参数进行截取,发现了以下比较好用的方法,记录下:
file=/dir1/dir2/dir3/my.file.txt
我们可以用${ }分别替换获得不同的值:
${file#*/}:拿掉第一条/及其左边的字串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条/及其左边的字串:my.file.txt
${file#*.}:拿掉第一个.及其左边的字串:file.txt
${file##*.}:拿掉最后一个.及其左边的字串:txt
${file%/*}:拿掉最后条/及其右边的字串:/dir1/dir2/dir3
${file%%/*}:拿掉第一条/及其右边的字串:(空值)
${file%.*}:拿掉最后一个.及其右边的字串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个.及其右边的字串:/dir1/dir2/dir3/my
 

Shell中EOF界定符用法

 
解析变量
不解析变量
EOF加上单引号
 

防火墙配置

 

CentOS7下打开关闭firewalld防火墙

firewalld打开关闭及其他常用命令:
  • 启动:systemctl start firewalld
  • 关闭:systemctl stop firewalld
  • 查看状态:systemctl status firewalld
  • 开机禁用:systemctl disable firewalld
  • 开机启用:systemctl enable firewalld
systemctl是CentOS7的服务管理工具中主要的工具,systemctl融合servicechkconfig的功能于一体:
  • 启动一个服务:systemctl start firewalld.service
  • 关闭一个服务:systemctl stop firewalld.service
  • 重启一个服务:systemctl restart firewalld.service
  • 显示一个服务的状态:systemctl status firewalld.service
  • 在开机时启用一个服务:systemctl enable firewalld.service
  • 在开机时禁用一个服务:systemctl disable firewalld.service
  • 查看服务是否开机启动:systemctl is-enabled firewalld.service
  • 查看已启动的服务列表:systemctl list-unit-files|grep enabled
  • 查看启动失败的服务列表:systemctl --failed

firewalld-cmd配置命令

  • 查看版本:firewall-cmd --version
  • 查看帮助:firewall-cmd --help
  • 显示状态:firewall-cmd --state
  • 查看所有打开的端口:firewall-cmd --zone=public --list-ports
  • 更新防火墙规则:firewall-cmd --reload
  • 查看区域信息:firewall-cmd --get-active-zones
  • 查看指定接口所属区域:firewall-cmd --get-zone-of-interface=eth0
  • 拒绝所有包:firewall-cmd --panic-on
  • 取消拒绝状态:firewall-cmd --panic-off
  • 查看是否拒绝:firewall-cmd --query-panic

firewall-cmd开启端口实例

  • 添加命令:firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
  • 重新载入:firewall-cmd --reload
  • 查看:firewall-cmd --zone= public --query-port=80/tcp
  • 删除:firewall-cmd --zone= public --remove-port=80/tcp --permanent
 

设置静态ip

 
 
注释部分为更改静态ip
 

nvm安装

 

安装显卡驱动

 
方法2
执行nvidia-smi命令可以查询到gpu相关的一些配置
 

ubuntu 开启远程

sudo apt-get install openssh-server

ubuntu 笔记本关闭合盖休眠

sudo vim /etc/systemd/logind.conf
#HandleLidSwitch=suspend 更改为 HandleLidSwitch=ignore
service systemd-logind restart
 

显示完整的命令信息

使用--no-trunc选项:添加--no-trunc选项可以显示完整的命令信息,而不会进行截断。例如:
 

SCP命令

后台运行SCP, 安装expect 编写脚本 start.sh
后台运行
 

© Wang Jiahao 2021 - 2024