一、Linux提示-bash fork 无法分配内存
说明:老版本系统的内核pid参数比较小(默认设置的是32768),当Linux程序创建的线程数超过32768时, 系统无法在创建线程,就会提示 -bash fork 无法分配内存

解决办法:
#查看正在运行的线程数
[root@zbx-server /]# ps -eLf|wc -l
#查看Linux系统允许的最大线程数
[root@zbx-server /]# sysctl kernel.pid_max
#设置Linux最大线程数
[root@zbx-server /]# echo "kernel.pid_max = 65535" >> /etc/sysctl.conf
#内核参数立即生效
[root@zbx-server /]# sysctl -p
二、Linux删除文件名为乱码的文件
说明:在日常工作中,通过rz命令上传文件会产生文件名为乱码的文件,并且通过rm无法删除
解决办法
#查找乱码文件的inode值
[root@zbx-server /]# ls -il
#通过inode值删除文件
[root@zbx-server /]# find . -inum inode值 -delete
三、ps -ef 和ps -aux的区别
说明:ps命令用于显示当前进程的状态,类似于 windows 的任务管理器
ps-ef
- 命令解释:列出全部进程的全部信息
- 输出格式:
UID PID PPID C STIME TTY TIME CMD
[root@rwjs ~]# ps -ef |grep calc
root 20498 1 0 1月26 ? 03:08:35 java -jar hesp-calc-model-jdk11-20240125-0825.jar
root 65215 65084 0 13:44 pts/1 00:00:00 grep --color=auto calc
- 参数解释
UID | 进程所属的用户ID |
PID | 进程的进程号ID |
PPID | 进程的父ID(启动此进程的其它进程) |
C | 此进程的CPU占用率(百分比) |
STIME | 进程的启动时间 |
TTY | 启动此进程的终端序号,如显示?,表示非终端启动 |
TIME | 进程占用CPU的时间 |
CMD | 进程对应的名称或启动路径或启动命令 |
ps -aux
- 命令解释:显示所有包含其他使用者的进程
- 输出格式:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
[root@rwjs ~]# ps -aux |grep calc
root 20498 0.2 10.2 8119880 1670984 ? Sl 1月26 188:35 java -jar hesp-calc-model-jdk11-20240125-0825.jar
root 65224 0.0 0.0 112728 988 pts/1 S+ 13:44 0:00 grep --color=auto calc
- 参数解释
USER | 进程拥有者 | |
PID | pid | |
%CPU | 占用的 CPU 使用率 | |
%MEM | 占用的记忆体使用率 | |
VSZ | 占用的虚拟记忆体大小 | |
RSS | 占用的记忆体大小 | |
TTY | 终端的次要装置号码 (minor device number of tty) | |
STAT | 该行程的状态 | |
D | 无法中断的休眠状态 (通常 IO 的进程) | |
R | 正在执行中 | |
S | 静止状态 | |
T | 暂停执行 | |
Z | 不存在但暂时无法消除 | |
W | 没有足够的记忆体分页可分配 | |
< | 高优先序的行程 | |
N | 低优先序的行程 | |
L | 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O) | |
START | 行程开始时间 | |
TIME | 执行的时间 | |
COMMAND | 所执行的指令 |
四、Linux三种安装方式的区别
1、区别
- rpm:安装rpm包时,如有关系依赖包,需要自己去解决依赖关系,无法修改安装位置
- yum:可以联网下载自动解决依赖关系或配置yum源资源仓库,无法修改安装位置
- 源码编译安装:可以指定安装路径,根据自己需求进行定制
2、详解
-
rpm安装
从本地rpm数据库 /var/lib/rpm 中查找安装包并拉取安装,或通过wget联网拉取后rpm安装,yum也可安装rpm包
-
一般命名格式:
-
常用命令:
RPM包管理命令 | |
---|---|
常⽤命令 | 作⽤ |
rpm -qa | 查看系统已安装的rpm包列表 |
rpm -q pkg.name | 查询某个rpm包 |
rpm -q --whatprovides xxx | 显示xxx功能是由哪个包提供的 |
rpm -q --whatrequires xxx | 显示xxx功能被哪个程序包依赖的 |
rpm -q --changelog xxx | 显示xxx包的更改记录 |
rpm -qi pkg_name | 查看一个包的详细信息 |
rpm -qd pkg_name | 查询一个包所提供的文档 |
rpm -qc pkg_name | 查看已安装rpm包提供的配置文件 |
rpm -ql pkg_name | 查询指定软件包所安装的目录,文件列表 |
rpm -qf filename/路径 | 查看某个文件/目录属于哪个包 |
rpm -qR pkg_name | 查询包的依赖关系 |
rpm -ivh xxx.rpm | 安装rpm包 |
rpm -ivh --test xxx.rpm | 测试安装rpm包 |
rpm -ivh --nodeps xxx.rpm | 安装rpm包时忽略依赖关系 |
rpm -e xxx | 卸载程序包 |
rpm -Fvh pkg_name | 升级确定已安装的rpm包 |
rpm -Uvh pkg_name | 升级rpm包(若未安装则会安装) |
rpm -V pkg_name | RPM包详细信息校验 |
-
yum安装
yum安装软件包是从本地镜像出库或远程仓库中获取软件的,如果有网络,可以直接联网安装,也可以下载rpm包来安装,yum可以自动解决源码安装与rpm安装时包之间的依赖关系问题,当一个包有错综复杂的依赖关系时,yum是最好的选择。(但其底层还是rpm)
-
注意
仓库配置文件目录:/etc/yum.repos.d/*.repo(repo文件是yum找到安装镜像的位置,可以自己配置)
yum的缓存目录:/var/cache/yum
yum的日志文件:/var/log/yum.log
-
常用命令
YUM 包管理命令 | |
---|---|
常⽤命令 | 作⽤ |
yum repolist enabled | 显示可用的源仓库 |
yum search pkg_name | 搜索软件包 |
yum install pkg_name | 下载并安装软件包 |
yum install --downloadonly pkg_name | 只下载不安装 |
yum list | 显示所有程序包 |
yum list installed | 查看当前系统已安装包 |
yum list updates | 查看可以更新的包列表 |
yum check-update | 查看可升级的软件包 |
yum update | 更新所有软件包 |
yum update pkg_name | 升级指定软件包 |
yum deplist pkg_name | 列出软件包依赖关系 |
yum remove pkg_name | 删除软件包 |
yum clean all | 清除缓存 |
yum clean packages | 清除缓存的软件包 |
yum clean headers | 清除缓存的header |
-
源码编译安装
源码包,顾名思义就是程序的原始代码,下载源码包后,需要你解压,然后./configure --prefix=xxxx 预编译,即检测环境并指定软件安装目录,生成Makefile,再make 编译生成可执行的二进制文件,最后make install 真正安装。
-
编译安装三部曲:
./configure:预编译,它是用来检测你的安装平台的目标特征的,比如它会检测是否有CC或GCC,是否有安装所需要的依赖包,然后生成Makefile文件,你也可以指定很多参数,如--prefix=安装目录等;
make -j 4:是用来编译的,它从Makefile中读取指令,然后编译,加 -j 4参数表示开启4个内核进行并行编译;
make install:是真正用来安装的,它也从Makefile中读取指令,安装到指定的位置。
注意:对于make出错的情况,需要先解决错误,然后最好使用 make clean
命令先清除make失败的内容然后再重新make编译。
-
源码包安装的软件卸载
进入到之前解压的源码包位置、make uninstall(卸载安装)、make distclean(卸载编译和配置过程) 、删除软件安装目录;
以上是标准的卸载源码编译安装的软件的步骤,如果觉得麻烦,可以直接删除软件的安装目录及相关命令文件都可以。
3.总结
1、yum安装
[root@master ~]# yum install http -y #yum安装软件,自动解决依赖
2、rpm安装
[root@master ~]# rpm -ivh samba-common-tools-4.10.16-15.el7_9.x86_64.rpm #rpm安装软件,需要手动解决依赖
3、源码编译安装
[root@master ~]# tar -zxvf http-2.7.0.tar.gz -C / #源码编译,先解压源码包
[root@master ~]# mkdir /usr/local/http-2.7.0 && cd /usr/local/http-2.7.0 #创建目录
[root@master http-2.7.0]# ./configure --prefix=/usr/local/http-2.7.0 #预编译并制定安装参数
[root@master http-2.7.0]# make -j 4 #编译,开启4个CPU并行编译
[root@master http-2.7.0]# make install #安装
我们必须根据实际环境的不同来选择合适的方式来安装包,例如:
- 需要软件在机器上有最好的兼容性——选择源码安装,但其中的依赖关系我们用yum来解决
- 银行、公安等不接入公网的系统——用光盘中的rpm包安装
- 无特别需求——yum安装
五、Java8升级到Java11
yum安装,先移除java8安装包,然后
yum install java-11-openjdk-devel -y
无需配置环境变量,系统会自动加到默认路径,程序启动时会自动去识别认证
六、linux虚拟机提示:ABRT 已检测到 '1' 个问题。预了解详细信息请执行:abrt-cli list --since 1440470310
原因:因为没输入ps -ef命令
七、Linux:“您在 /var/spool/mail/root 中有新邮件”
1、问题描述:
经常登录Linux系统的时候会提示:“您在 /var/spool/mail/root 中有邮件”
这是LINUX的邮件提示功能。LINUX会定时查看系统各种状态做汇总,每经过一段时间会把汇总的信息发送的root的邮箱里。
2.查看邮箱内容,删除邮件,禁止系统检查邮件
#查看邮件内容
[root@test ~]# cat /var/spool/mail/root
#删除邮件
[root@test ~]# cat /dev/null > /var/spool/mail/root
#禁止系统检查邮件
[root@test ~]# echo "unset MAILCHECK" >> /etc/profile
[root@test ~]# source /etc/profile
八、无需telnet监测端口是否监听
1、方法一:ssh -v ip地址 -p 端口号
2、方法二:echo >/dev/tcp/ip地址/端口号
九、可视化查看系统启动时的性能
[root@zbx-server ~]# systemd-analyze plot > boot.svg
#下载boot.svg文件使用浏览器打开
十、解决vim粘贴自动被缩进问题
修改配置文件时,如果配置中有注释#,会导致后面的配置都加上#改变原有缩进格式,如下图所示
解决办法:在插入前先输入:set paste ,在按i进行复制
十一、查询Linux操作系统的安装时间
#查看/boot/grub2目录下的grub.cfg文件时间
十二、执行systemctl start sshd 后,系统自动重启
前提:系统重启后,手动启动ssh服务器,执行命令后,服务器会自动重启
排查:tail -500 /var/log/boot.log 查看服务器启动日志,发现有挂载报错问题
解决:vim /etc/fstab 发现有一条异常数据,注释后重新执行解决ssh服务器启动问题