首页 > 技术文章 > Linux常用总结

lubincan 2020-04-24 11:24 原文

Linux常用总结

 

CentOS 7.0中一个最主要的改变,就是切换到了systemd。它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理。systemd兼容SysV和Linux标准组的启动脚本。

Systemd是一个Linux操作系统下的系统和服务管理器。它被设计成向后兼容SysV启动脚本,并提供了大量的特性,如开机时平行启动系统服务,按需启动守护进程,支持系统状态快照,或者基于依赖的服务控制逻辑。

先前的使用SysV初始化或Upstart的红帽企业版Linux版本中,使用位于/etc/rc.d/init.d/目录中的bash初始化脚本进行管理。而在RHEL 7/CentOS 7中,这些启动脚本被服务单元取代了。服务单元以.service文件扩展结束,提供了与初始化脚本同样的用途。要查看、启动、停止、重启、启用或者禁用系统服务,你要使用systemctl来代替旧的service命令。

注:为了向后兼容,旧的service命令在CentOS 7中仍然可用,它会重定向所有命令到新的systemctl工具。

例如

启动一个服务: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 
View Code

防火墙

启动: systemctl start firewalld
查看状态: systemctl status firewalld 
停止: systemctl disable firewalld
禁用: systemctl stop firewalld

配置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 --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 
SELinux
查看状态
[root@dev-server ~]# getenforce
Disabled
[root@dev-server ~]# /usr/sbin/sestatus -v
SELinux status:                 disabled

临时关闭
##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0

永久关闭
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled 
设置后需要重启才能生效
View Code

安装nginx报错

./configure 时提示以下错误:

checking for OS
 + Linux 2.6.32-431.el6.x86_64 x86_64

checking for C compiler ... not foun

yum -y install gcc gcc-c++ autoconf automake make

 ./configure: error: SSL modules require the OpenSSL library.

yum -y install openssl openssl-devel
View Code

SSH免秘钥登录

1.ssh-keygen  等同于ssh-keygen -t rsa
    .ssh/.id_rsa 私钥
    .ssh/.id_rsa.pub 公钥
2. 把公钥copy到要登录的目标机器上
    cd  /root/.ssh
    scp -rp id_rsa.pu root@192.168.10.35:/root/.ssh #把本地文件copy到远程
    scp -rp root@192.168.10.35:/root/.ssh/id_rsa.pu /tmp/ #把远程文件copy到本地
    
3(手动写入). 在目标机器上,把id_rsa.pub里的key取出写入.ssh/authorized_keys
    查看当前用户id, whoami
    su - root 切换用户
    cd /root/.ssh
    cat id_rsa.pub >authorized_keys 读出id_rsa.pub的内容并写入到>后的文件,(覆盖)
    cat id_rsa.pub >>authorized_keys 读出id_rsa.pub的内容并写入到>后的文件,(追加)
authorized_keys的权限要是600!!! 
只有用户自己有写权限。否则验证无效

4.自动写入
ssh-copy-id -i ~/.ssh/id_rsa.pub  192.168.198.132
输入远程机器密码就可以了
ssh免秘钥
1ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:
2、两个节点都执行操作:#ssh-keygen -t rsa然后全部回车,采用默认值.
3、这样生成了一对密钥,存放在用户目录的~/.ssh下。将公钥考到对方机器的用户目录下
,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)。
4、设置文件和目录权限:
设置authorized_keys权限
$ chmod 600 authorized_keys 
设置.ssh目录权限
$ chmod 700 -R .ssh
5、要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。

注意:1:如下是ssh 端口不是22,就用-p 指定,注意加引号。
     2:公钥也可以用scp传递到你要免秘钥登录的这台机器上,然后追加到秘钥登录的这台机器的authorized_keys文件里
ssh免秘钥双向

 Dell R730来电自启

复制代码
可以重启到服务器的BIOS里看看,System Scurity这项里面的 AC Power Recovery里选择,如下图中的,Last是停电之前的状态(停电之前是开机的状态就开机,关机的状态就不开机),On是来电就开机,Off是来电不开机。 
复制代码

 Crond定时任务

https://www.cnblogs.com/p0st/p/9482167.html

常见日志

/var/log/messages ---> 整体系统信息,其中也包含系统启动期间的日志。
/var/log/dmesg ---> 内核缓冲信息(kernel ring buffer)。用dmesg查看系统启动信息。
/var/log/auth.log ---> 系统授权信息,包括用户登录和使用的权限机制等。
/var/log/boot.log ---> 系统启动时的日志。
/var/log/daemon.log ---> 系统后台守护进程日志信息。
/var/log/dpkg.log ---> 安装或dpkg命令清除软件包的日志。
/var/log/kern.log ---> 内核产生的日志。
/var/log/lastlog ---> 记录所有用户的最近信息。用lastlog命令查看内容。
/var/log/maillog 或 /var/log/mail.log ---> 电子邮件服务器的日志信息。
/var/log/user.log ---> 记录所有等级用户信息的日志。
/var/log/alternatives.log ---> 更新替代信息都记录在这个文件中。
/var/log/btmp ---> 记录所有失败登录信息(用户、时间以及远程IP地址)。使用last命令查看,例如:last -f /var/log/btmp | more。
/var/log/cups ---> 涉及所有打印信息的日志。
/var/log/anaconda.log ---> Linux系统安装信息。
/var/log/yum.log ---> 使用yum安装的软件包信息。
/var/log/cron ---> crond计划任务服务执行情况。
/var/log/secure ---> 系统安全日志、验证和授权信息。
/var/log/wtmp或/var/log/utmp ---> 登录信息。使用 w/who/finger/id/last/lastlog/ac 进行查看。
/var/log/faillog ---> 用户登录失败信息。
默认文件的权限是666,目录的权限是777,umask是222
View Code

流量监控工具

nethogs: 按进程查看流量占用
iptraf: 按连接/端口查看流量
ifstat: 按设备查看流量
ethtool: 诊断工具
tcpdump: 抓包工具
ss: 连接查看工具
其他: dstat, slurm, nload, bmon
View Code

重定向及标准输入,输出,错误相关

通常情况,每个 Unix 程序在启动时都会打开三个流,一个用于输入,一个用于输出,一个用于打印诊断或错误消息。它们分别被做:标准输入,标准输出,标准错误。

文件描述符: POSIX 定义了STDIN_FILENO、STDOUT_FILENO 和 STDERR_FILENO 来代替 0、1、2。这三个符号常量的定义位于头文件 unistd.h。


标准输入 (stdin) :文件描述符为 0 ,使用 < 或 << ;其实可以理解为这个箭头指向哪里数据就往哪里跑.这里是输入(stdin).命令就通过<来获取数据.等于数据是从左边往命令里面流.

标准输出 (stdout):文件描述符为 1 ,使用 > 或 >> ;输出的时候不能用<或者<<,因为命令总是在前面.这里命令要输出数据.所以数据的来源是命令,数据就会随着箭头指向你给的方向.

标准错误输出(stderr):文件描述符为 2 ,使用 2> 或 2>>;


1.command >file 2>&1 等价于1>/dev/null 和2>/dev/null 和&/dev/null
首先command >file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file中;command>file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了两个同时去抢占file的管道.定向了2次。
那如果使用command >file 2>&1 这条命令就将stdout直接送向file,stderr 继承了第一次重定向(FD1)到管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。

2./dev/null
Linux下还有一个非凡的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
假如想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null
>/dev/null表示将程序通过printf或者fprintf打印到handle为1的stdout文件的信息,送到/dev/null空洞文件。
 
View Code

所以在执行shell脚本或者在shell脚本中不想看到输出是使用 command >/dev/null/ 2>&1或者找一个专门的日志文件command >/dev/null/ 2>&1

mysql数据库备份工具

mysqldump 小于200G
xtrabackup  大于200G
View Code

分割大文件

用法:split [选项]... [输入 [前缀]]
将输入内容拆分为固定大小的分片并输出到"前缀aa""前缀ab",...;
默认以 1000 行为拆分单位,默认前缀为"x"。如果不指定文件,或
者文件为"-",则从标准输入读取数据。


长选项必须使用的参数对于短选项时也是必需使用的。
  -a, --suffix-length=N 指定后缀长度为N (默认为2)
  -b, --bytes=大小 指定每个输出文件的字节大小
  -C, --line-bytes=大小 指定每个输出文件里最大行字节大小
  -d, --numeric-suffixes 使用数字后缀代替字母后缀
  -l, --lines=数值 指定每个输出文件有多少行
      --verbose 在每个输出文件打开前输出文件特征
      --help 显示此帮助信息并退出
      --version 显示版本信息并退出


SIZE 可以是一个可选的整数,后面跟着以下单位中的一个:
KB 1000,K 1024,MB 1000*1000,M 1024*1024,还有 G、T、P、E、Z、Y。



如过想指定每个分割的文件行数来分割

split -l 12000000 192.168.61.5_bak.txt -d -a 6

经过分割测试发现一千两百万行时每个文件大概700MB。



如过想指定每个分割的文件大小来分割

指定每个子文件700MB大小 文件后缀用字符区分

split -b 734003200 192.168.61.5_bak.txt  -a 6
View Code

分卷压缩与解压

1.分卷压缩,使用tar+split组合 
进入网站目录,执行: 
tar cvzf - gaojinbo.com| split -b 900m  - logs.tar.bz2.
 
2.合并 
cat logs.tar.bz2.* > gaojinbo.com.tar.gz


3.解压 
tar xvzf gaojinbo.com.tar.gz

tar命令参数简述
参数:
-j : 通过bzip2进行压缩\解压文件*.tar.bz2
-z : 通过gzip进行压缩\解压文件*.tar.gz
-c : 新建打包文件,可搭配-v来查看过程中被打包的文件名
-t : 查看打包文件的内容有哪些文件名
-x : 解压打包文件.
-v : 在压缩/解压过程中,显示正在处理的文件名
-f : -f后面接被处理的文件名
-C(大写) : 后接目录
-p : 保留备份数据的原本权限与属性
-P :    保留绝对路径,即允许备份数据中含有根目录存在的目录(危险)
常用:欲压缩或打包的文件或目录(/*)
bzip2压缩命令:tar -jcv -f boot.tar.bz2 /boot
gzip压缩命令 :tar -zcv -f boot.tar.gz  /boot
bzip2查看命令:tar -jtv -f /dir/*.tar.bz2
gzip 查看命令:tar -ztv -f /dir/*.tar.gz
bzip2解压缩命令:tar -jxv -f /dir/*.tar.bz2 -C 欲解压缩的目录
gzip解压缩命令 :tar -zxv -f /dir/*.tar.gz 欲解压缩的目录
特殊:
备份重要的系统数据,包括其完整的权限(-p参数):     tar -jcvp -f /root/etc.tar.bz2 /etc
只解压压缩文件内的其中一个文件:                          tar -jxv -f /root/etc.tar.bz2 etc/shadow
打包目录,但不含该目录下的某些文件(--exclude):
tar -jcv -f /root/system.tar.bz2  --exclude=root/etc* --exclude=root/system.tar.bz2 /etc /root
仅备份比某个时刻还要新的文件:
备份    :tar -jcv -f /root/etc.newer.2011.02.16.tar.bz2 –newer-mtime='2011-02-16' /etc/*
查看备份:tar -jtv -f etc.newer.2011.02.16.tar.bz2
注意:在备份文件的时候也备份它的父目录
View Code

/etc/services文件作用

/etc/services文件是记录网络服务名和它们对应使用的端口号及协议。文件中的每一行对应一种服务,它由4个字段组成,中间用TAB或空格分隔,分别表示“服务名称”、“使用端口”、“协议名称”以及“别名”。

文件包含了服务名和端口号之间的映射,很多的系统程序要使用这个文件。一般情况下,不要修改该文件的内容,因为这些设置都是Internet标准的设置。一旦修改,可能会造成系统冲突,使用户无法正常访问资源。
Linux系统的端口号的范围为0–65535,不同范围有不同的意义。

端口范围
    0 不使用
    1--1023 系统保留,只能由root用户使用
    1024---4999 由客户端程序自由分配
    5000---65535 由服务器端程序自由分配
View Code

目录详解

参考一  参考二

hydra使用

hydra -l root -P /home/post/pass.txt -M /home/post/ip.txt -t 2 ssh -s 62822
hydra -L user.txt -p 'pass' -t 10 -vV smtp://qiye.163..com/  -o save.log  爆破邮箱
hydra -C /root/Desktop/2.txt -t 1 -vV smtp://smtp.xxx.com -o /root/Desktop/save.log 爆破邮箱,一行对应一行 xxx.@qq.com:123
hydra -C /home/post/user2.txt -t 1  svn://ip -s 3590 爆破svn
hydra -l root -P /root/Desktop/pass.txt -M /root/Desktop/list.txt -t 2 mysql 爆破mysql
View Code

多线程下载

安装方式一:
yum -y install epel-release
yum install axel-2.4-9.el7.x86_64.rpm rpm -ivh axel-2.4-9.el7.x86_64.rpm

安装方式二:
wget -c http://pkgs.repoforge.org/axel/axel-2.4-1.el6.rf.x86_64.rpmrpm -ivh axel-2.4-1.el6.rf.x86_64.rpm


是用实例:
axel -an 4 https://ubuntu-mate.org/raspberry-pi/ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img.xz #同时开4线程下载

基本参数:
-n x指定线程数(x 必须为大于 0 的数字)
-o x 指定另存为目录(x 必须为本地目录)
-s x 指定下载速度(x 必须为大于 0 的数字,单位是 bytes/s)
-q 静默模式,无任何输出信息
-V 软件版本
Axel 在下载过程中如果遇到中断的话,在原来的目录再次执行相同的下载命令即可恢复下载进度。
View Code

修改终端颜色

PS1是Linux终端用户的一个环境变量,用来定义命令行提示符的参数。

在终端输入命令:
# echo $PS1
可得到当前PS1的定义值:
PS1='[\u@\h \W]\$ '

PS1的常用参数以及含义:
  \d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
  \H :完整的主机名称
  \h :仅取主机名中的第一个名字
  \t :显示时间为24小时格式,如:HH:MM:SS
  \T :显示时间为12小时格式
  \A :显示时间为24小时格式:HH:MM
  \u :当前用户的账号名称
  \v :BASH的版本信息
  \w :完整的工作目录名称
  \W :利用basename取得工作目录名称,只显示最后一个目录名
  \# :下达的第几个命令
  \$ :提示字符,如果是root用户,提示符为 # ,普通用户则为 $

所以linux默认的命令行提示信息的格式
   PS1='[\u@\h \W]\$ '  的意思就是:[当前用户的账号名称@主机名的第一个名字 工作目录的最后一层目录名]#


颜色设置参数
  在PS1中设置字符颜色的格式为:\[\e[F;Bm\]........\[\e[0m\],其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47,\[\e[0m\]作为颜色设定的结束。
  颜色对照表:
    F    B
    30  40 黑色
    31  41 红色
    32  42 绿色
    33  43 黄色
    34  44 蓝色
    35  45 紫红色
    36  46 青蓝色
    37  47 白色
  只需将对应数字套入设置格式中即可。
  比如要设置命令行的格式为绿字黑底(\[\e[32;40m\]),显示当前用户的账号名称(\u)、主机的第一个名字(\h)、完整的当前工作目录名称(\w)、24小时格式时间(\t),可以直接在命令行键入如下命令:
 经过多次测试后,最终确定了一个适合我自己的格式:
# PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "

上面的设置的作用域只有当前终端的登陆有效,关闭终端或退出登录即刻失效。要想永久性的保存设置,需要修改.bashrc配置文件。
vim .bashrc
PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "
source .bashrc
View Code

创建指定大小的文件

truncate
truncate -s 13M onebox.test

fallocate
fallocate -l 13000000 onebox.test

dd
dd if=/dev/urandom of=onebox.test bs=13MB count=1
OR
head -c 13MB /dev/urandom > onebox.test
View Code

查看版本信息等

查看全部信息
[root@VM_168_159_centos log]# uname -a
Linux VM_168_159_centos 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
查看内核信息
[root@VM_168_159_centos log]# uname -r
3.10.0-693.el7.x86_64
查看版本号
[root@VM_168_159_centos log]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)
View Code

开机自启

一、添加开机自启服务

在CentOS 7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例):
systemctl enable jenkins.service #设置jenkins服务为自启动服务
sysstemctl start  jenkins.service #启动jenkins服务

二、添加开机自启脚本

在centos7中增加脚本有两种常用的方法,以脚本autostart.sh为例:
#!/bin/bash
#description:开机自启脚本
/usr/local/tomcat/bin/startup.sh  #启动tomcat

方法一

1、赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)
chmod +x /opt/script/autostart.sh

2、打开/etc/rc.d/rc.local文件,在末尾增加如下内容
/opt/script/autostart.sh

3、在centos7中,/etc/rc.d.rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.d/rc.local

方法二

1、将脚本移动到/etc/rc.d/init.d目录下
mv  /opt/script/autostart.sh /etc/rc.d/init.d

2、增加脚本的可执行权限
chmod +x  /etc/rc.d/init.d/autostart.sh

3、添加脚本到开机自动启动项目中
cd /etc/rc.d/init.d
chkconfig --add autostart.sh
chkconfig autostart.sh on

 
View Code

进入单用户模式

1 -在启动grub菜单,选择编辑选项启动
2 - 按键盘e键,来进入编辑界面
3 - 找到Linux 16的那一行,将root=/dev/mapper/centos-root ro rd改为root=/dev/mapper/centos-root  rw init=/sysroot/bin/sh rd
4 - 现在按下 Control+x ,使用单用户模式启动
5 - 现在,可以使用下面的命令访问系统
chroot /sysroot
6 - 重置密码
passwd root
7 - 更新系统信息
touch /.autorelabel
8 - 退出chroot
exit
9 - 重启你的系统
reboot
View Code

修改主机名

永久修改:hostnamectl set-hostname <newhostname>
临时修改:hostname <new-hostname>
View Code

修改时区

将时区是修为上海
date -R 查看时区
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
View Code

文件编码及修改文件编码

通常来说,Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8,所以Linux下打开windows的文件会有乱码的情况。另外,有时要将文件进行编码转换,如将简体中文转换为繁体中文。
vim中查询修改文件编码格式
  set fileencoding查看现在文本的编码
  set fenc=编码转换当前文本的编码为指定的编码
  set enc=编码以指定的编码显示文本,但不保存到文件中。这里的“编码”常见为gbk utf-8 big5 cp936
  set ff查看当前文本的模式类型,一般为dos,unix
  set ff=dos设置为dos模式也可以用一下方式转换为unix模式
  %s/^M//g等同于:set ff=unix
使用dos2unix
  格式:dos2unix file

  如果一次转换多个文件,把这些文件名直接跟在dos2unix之后。(注:也可以加上-o参数,也可以不加,效果一样)
    格式:dos2unix file1 file2 file3  或者  格式:dos2unix -o file1 file2 file3

  上面在转换时,都会直接在原来的文件上修改,如果想把转换的结果保存在别的文件,而源文件不变,则可以使用-n参数。
    格式:dos2unix oldfile newfile

  如果要保持文件时间戳不变,加上-k参数。所以上面几条命令都是可以加上-k参数来保持文件时间戳的。
    格式:dos2unix -k file
View Code

命令补全包

因为centos7最小安装的话,默认没有自动补全功能,要启用这个功能的话要安装一个bash-completion的包,然后退出bash,重新登录即可
yum install -y bash-completion
View Code

安装Centos7出现dracut-initqueue timeout 等各种问题

问题:
  之前使用U盘安装CentOS6.5可以正常安装,即用 UltraISO将U盘制作为启动盘,启动时选择USB启动即可。可是安装CentOS7时,进不了安装界面,提示超时,最后进入到dracut#:字符界面

原因分析:
  centos7官方说(https://wiki.centos.org/HowTos/InstallFromUSBkey),对于CentOS7,在Window上制作镜像的话,由于CentOS有一个特别的分区问题,所以有些Windows工具就不能正确的将U盘做成启动盘。目
  前为止不可以的工具有:unetbootin 和 universal usb installer。可以 的工具有Rufus, Fedora LiveUSB Creator,Win32 Disk Image, Rawrite32和dd。
解决方法:
  1.使用win32 disk imager将U盘制作为启动盘,写入时间很慢,但是最后成功安装
  2.>在报错信息下面进行如下操作:
    >dracut:/# cd dev 
   >dracut:/# ls 这样子你就会看到所有的设备信息。 
    >找到sdbx,x为一个数字,是你u盘所在 
   >dracut:/# reboot 重启之后 
    >在install页面按e键 
    >修改vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64.check quiet为 vmlinuz initrd=initrd.img inst.stage2=/hd:/dev/sdbx(你u盘所在)quiet 然后按Ctrl+x就好了。就出现了centOS的安装界面了。
   但是在操作过程中,我发现的dev里面的sdb开头的只有sdb,sdb1和sdb2,于是我就把它仨都试了一遍,就过都说找不到img文件。 本来我以为我的电脑不能安装Linux的,后来我发现他们一般都说默认是sdb4,可我的dev里面没有sdb4,不过我的dev有个sdc4,于是我就使用sdc4 
    >修改vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64.check quiet为 vmlinuz initrd=initrd.img inst.stage2=/hd:/dev/sdc4 quiet 然后按Ctrl+x,就出现了centOS的安装界面了。
View Code

在linux中搜索执行过的命令

crtl+r

 Centos7服务器自动重启 acpi引起

复制代码
查看日志信息

sudo tail -n1000 /var/log/messages |grep -i error

sudo grep -E "error|Error|ERROR|fail|Fail|FAIL" /var/log/dmesg

分析:

由于BIOS中开启了中断重映射(这是个复杂的东西,也可以简单讲明白,我就不讲了。),在ERST(芯片集中的错误校验表)校验时发生错误,导致高级配置电源管理模块无法处理IPMI驱动请求,预存数据到内存发生错误,引发kernel上演了一出找到空指针的戏法。

解决办法

1.

vi /boot/grub/grub.conf
在kernel一行最后加上acpi=off noacip

kernel ... acpi=off noacip

2.升级内核版本

3.

在grub.conf的内核启动参数中添加 intremap=off 或者 intremap=no_x2apic_optout

intremap={on,off,nosid,no_x2apic_optout}

    on(默认值)开启中断重映射,BIOS中默认开启

    off 关闭中断重映射

    nosid 重映射时不对SID(Source ID)做检查

    no_x2apic_optout 无视BIOS的设置,强制禁用x2APIC特性,主要用于解决某些对x2APIC支持有缺陷的BIOS导致的故障

 

4.重装系统

复制代码

安装gcc出错-Setup script exited with error: command 'gcc' failed with exit status

复制代码
由于没有正确安装Python开发环境导致。
Python2
  yum install python-dev
Python3
  yum  install python3-dev
可能需要libevent库
  yum  install libevent-dev
最后更新下开发环境
  yum groupinstall 'development tools'
复制代码

vim案例

在使用虚拟机vim的时候,突然连接不上虚拟机,导致刚刚在编写的文件还未保存
vim会在当前文件下生成一个缓存文件
例如,第一次产生的交换文件名为'.spring.md.swp';再次意外退出后,将会产生名为'.spring.md.swo'的交换文件,而第三次产生的交换文件则为'.spring.md.swn';以此类推
使用vim -r spring.md来进行文件的恢复,或者其它选项进行编辑或关闭或查看

linux内核i/o调度方法

https://jackyrong.iteye.com/blog/898938
https://blog.51cto.com/scoke/490546
https://blog.csdn.net/qq_41998290/article/details/88416427

 localhost和127.0.0.1的区别

复制代码
localhost也叫local ,正确的解释是:本地服务器
127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器),是一个回环地址,常用来测试使用
他们的解析通过本机的host文件,windows自动将localhost解析为127.0.0.1

在cmd中ping localhost解析出来的是IPV6的::1,这是ipv6的本机地址,原因是windows有个优先解析列表,当ipv6的优先级高于ipv4时,就会出现这种情况。

修改办法

复制代码

 编译*.scr.rpm

复制代码
安装rpm build工具
yum install rpm* rpm-build rpmdev*
以安装vdsm-4.18.3-0.el7ev.src.rpm为例
  1、执行命令:rpm -i vdsm-4.18.3-0.el7ev.src.rpm
  2、执行命令:cd /root/rpmbuild/SPECS
  3、执行命令:rpmbuild -bb vdsm.spec
  4、执行命令:cd /root/rpmbuild/RPMS/x86_64
  5、执行命令:yum localinstall vdsm-4.18.3-0.el7.centos.x86_64.rpm
复制代码

 

 

企业故障案例

企业故障案例一:web磁盘服务器占满解析及解决 

参考一  参考二  参考三  参考四   strace

  可能原因是当一个定时任务正在执行的时候,cron中执行的程序有输出内容,输出内容会以mail的形式发送给对应的cron job用户,sendmail邮件服务默认是关闭的,所以定时任务发送的邮件就会临时堆在/var/spool/clientmqueue/,造成文件数目特别多,在ext3文件系统中,每个文件占用一个inode,造成磁盘空间不断缩小

如果文件太多,占用空间太大,文件太多,就执行下面的命令:(或者直接删除目录,然后按照原来的权限和属组在创建)

# cd /var/spool/clientmqueue
# ls | xargs rm -f 
# 也可以每周删除一下clientmqueue目录下的临时文件,放入到定时任务中

企业故障案例二:

 

密码管理工具

https://keeweb.info/?utm_source=www.appinn.com
中文插件:https://plugins.keeweb.info/translations/zh-CN/

Centos7命令总结

复制代码
watch -n 2 /tmp/log.log   默认每隔两秒钟查看log.log是否有变化

tail -f /tmp/log.txt             查看文件变化,一直等待

for i in {3..254} ; do ping -c 1 192.168.0.$i &>/dev/null && echo 192.168.0.$i is alive ;done  查看内网主机是否存活

ll |wc -l 查看目录下文件的数量

 hostnamectl set-hostname node1 修改hostname

time dd=/dev/ of=/mnt/123.txt bs=9k count=2000 计算一个任务的执行时间

复制代码

 linux配置文件

复制代码
复制代码

 linux磁盘管理

复制代码
复制代码

 linux软件包管理

复制代码
复制代码

linux进程与服务

复制代码

复制代码

linux启动流程

复制代码

复制代码

 linux日志系统

复制代码

复制代码

 

 

 

 

推荐阅读