Linux百科

一、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进程拥有者
PIDpid
%CPU占用的 CPU 使用率
%MEM占用的记忆体使用率
VSZ占用的虚拟记忆体大小
RSS占用的记忆体大小
TTY终端的次要装置号码 (minor device number of tty)
STAT该行程的状态
D      无法中断的休眠状态 (通常 IO 的进程)
R正在执行中
S静止状态
T暂停执行
Z不存在但暂时无法消除
W没有足够的记忆体分页可分配
<高优先序的行程
N低优先序的行程
有记忆体分页分配并锁在记忆体内 (实时系统或捱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_nameRPM包详细信息校验
  • 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服务器启动问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值