Linux

VMware

使用虚拟机安装Centos系统的时候,一定要在安装后期的步骤中开启网络,否则只能通过vi修改配置文件

远程服务器管理

  1. 通过ip addr查看网卡ip地址

ip addr

  1. 通过ifconfig查看网卡 ip 地址

最小化安装 CentOs 后是没法直接用 ifconfig、netstat 命令的,如果要用 ifconfig、netstat 等
命令需要安装 net-tools。

yum install -y net-tools

  1. yum 软件包查找

yum search ifconfig 然后结果是在net-tools包种

安装的时候忘记开启网络我们可以在配置文件中开启网络

vi /etc/sysconfig/network-scripts/ifcfg-ens33 (有可能ifcfg-ens33是别的名字)
找到ONBOOT='no'修改为 yes

Linux 常用命令、shell 技巧、目录结构介绍

  • Linux 常用命令

  1. init 0 关机
  2. init 6 重启
  3. ls 、 ls -l 、 ll 列出出当前目录下的文件
  4. cd 切换目录
  5. pwd 查看当前路径
  6. cd - 切换最近使用过的两个目录
  7. ctrl+c 中断当前程序
  8. ctrl+l / (clear) 清屏
  9. ip addr / ifconfig 查看网卡信息
  10. ping 127.0.0.1 看网络是否通畅

  • Linux shell 命令技巧

  1. tab 补全
    • 命令+(1 次)tab
    • 命令+(2 次)tab
  2. 上下键盘 查看最近的历史命令
  3. history
    • 查看命令历史:!22 调用历史中编号为 22 的命令
  4. !h : 调用历史中最后一次以 h 开头的命令
  • 获取帮助:ls --help / man ls

  • Linux 目录结构介绍

  • root 目录:linxu 超级权限 root 的主目录。*
  • home 目录:系统默认的用户主目录,如果添加用户是不指定用户的主目录,默认在/home下创建与用户同名的文件夹。 *
  • bin 目录:存放系统所需要的重要命令,比如文件或目录操作的命令 ls、cp、mkdir 等,另外
    /usr/bin 也放了一些系统命令。这些命令对应着文件都是可以执行的。 *
  • sbin 目录:存放只有 root 超级管理员才能执行的程序 *
  • boot 目录:存放着 linux 启动时内核及引导系统程序所需要的核心文件,内核文件和 grub
    系统引导管理器都位于此目录。
  • dev 目录:存放这 linux 系统下的设备文件,如光驱等。
  • etc 目录:存放系统的配置文件,作为一些软件启动时默认配置文件读取的目录,如/etc/fstal
    存放系统分析信息。 * mnt 目录: 临时文件挂载目录、 也可以说是测试目录
  • opt 目录: 第三方软件存放目录* media 目录:即插即用型设备挂载点,光盘默认挂载点,通常光* 盘挂载于/mnt/cdrom 下。
  • tmp 目录:临时文件夹。*
  • usr 目录:应用程序存放目录,安装 linux 软件包是默认安装到/usr/local 目录下。 *
  • var 目录:目录经常变动,/var/log 存放系统日志,/var/log 存放系统库文件。*

Linux 文件管理 目录管理

Linux 文件管理


  1. 创建文件
    touch file1
  2. 删除文件
    • rm -rf file11
    • -r:递归的删除目录下面文件以及子目录下文件。
    • -f:强制删除,忽略不存在的文件,从不给出提示
  3. 修改文件名:mv file1 file11
  4. 查看文件内容:cat file1
  5. 复制文件:cp file2 file22
  6. 移动文件:mv file1 file11
  7. 编辑文件:vi file1
  8. 批量创建删除文件
    • touch file{1..10}
    • rm -rf file{1..10}
  9. 查看文件前 3 行
    • | 把前面的执行结构给后端
    • cat file1 | head -3
  10. 查看文件后 3 行:cat file1 | tail -3
  11. liunx 服务器上面查找文件
    1. find
    • find / -name httpd.conf
    • find 目录 -name 文件名
    1. updatedb 查找速度快
    • 建立一个小型数据库 updatedb
    • 再数据库里面搜索 locate httpd.conf
    • yum install mlocate -y
    • mlocate 是新型的 locate 比 updatedb 速度更快。
  12. 查找文件里面内容 找到 httpd.conf 里面有 listen
    • cat httpd.conf | grep listen
    • cat httpd.conf | grep -ignore listen / cat httpd.conf | grep -i listen 忽略大小写
  13. 查找文件里面内容 vi 搜索(注意是命令行模式下,不是编辑模式下)
    • vi httpd.conf
    • 输入 /Listen 搜索 Listen N 下一个

Vi/Vim 快速入门

vi 是 Unix 和类 Unix 环境下的可用于创建文件的屏幕编辑器。vi 有两种工作模式:命令模式
和文本输入模式。vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。


图1.png
  1. 退出vi命令模式


    图2.png
  2. 命令模式下文本修改


    图3.png
图4.png

Linux 目录操作


  1. 创建目录: mkdir dir1 dir2 dir3
  2. 删除目录
    • rm -rf dir1 dir2
    • -r:递归的删除目录下面文件以及子目录下文件。
    • -f:强制删除,忽略不存在的文件,从不给出提示
      rm -rf dir* 以 dir 开头的所有文件删除
  3. 重命名目录或移动目录:mv dir1 dir11
  4. 查看目录:ls
  5. 递归创建目录:mkdir -p a/b/c/d/e/f/g
  6. 递归查看目录:tree a
  7. 复制目录:cp -rf wwwroot/ mywwwroot/
  8. tree 命令不存在的话需要安装

yum install tree -y


Linux ll 显示的文件类型

Linux 下可以用 ll 命令来判断文件类型,主要是根据每行的首个字符来判断


  • -rw-r—r— "-“开头的都是普通文件;
  • drw-r—r— "d"开头的是目录文件;
  • brw-r—r— "b"开头的文件都是块设备文件;
  • crw-r—r— "c"开头的文件都是字符设备文件;
  • srw-r—r— "s"开头的文件都是 socket 文件; (e.g. srwxrwxrwx 1 mysql mysql 0 Sep 9
    13:49 mysql.sock)
  • prw-r—r— "p"开头的文件都是管道文件;
  • lrw-r—r— "l"开头的文件都是软链接文件;

Linux 打包压缩 别名管理

Linux 打包压缩命令

目前 linux 中打包和压缩的命令很多,最常用的方法有 zip、gzip、bzip2、xz、tar

  1. zip 压缩包

  1. 制作

zip -r public.zip public
-r 递归 表示将指定的目录下的所有子目录以及文件一起处理

  1. 解压

unzip public.zip

unzip public.zip -d dir

  1. 查看: unzip -l public.zip
  2. 安装 zip 减压软件

yum install -y unzip zip


  1. gz 压缩包: (源代码压缩)

Linux 下最常用的打包程序就是 tar 了,使用 tar 程序打出来的包我们常称为 tar 包,tar
包文件的命令通常都是以.tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩了,
所以首先就来讲讲 tar 命令的基本用法。gz包是在tar包的基础上生成的。


  1. 制作 gz 包
    tar czvf public.tar.gz public
  2. 解压 gz 包
    tar xzvf public.tar.gz
  3. 查看 gz 包
    tar tf public.tar.gz
  4. 制作 tar 包
    tar cvf wwwroot.tar wwwroot 仅打包,不压缩!
  5. 解压 tar 包
    tar xvf wwwroot.tar

参数:
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压
缩与解压缩。

  • -c :建立一个压缩档案的参数指令(create 的意思) -x :解开一个压缩档案的参数指令!
  • -t :查看 tarfile 里面的档案!
  • -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
  • -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
  • -v :压缩的过程中显示档案!这个常用,但不建议用在背景执行过程!
  • -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

  1. xz 压缩包

对于 xz 这个压缩相信很多人陌生,但 xz 是绝大数 linux 默认就带的一个压缩工具,xz
格式比 7z 还要小


  1. 制作
  • tar cvf xxx.tar xxx // 这样创建 xxx.tar 文件先,
  • xz xxx.tar //将 xxx.tar 压缩成为 xxx.tar.xz 删除原来的 tar 包
  • xz -k xxx.tar //将 xxx.tar 压缩成为 xxx.tar.xz 保留原来的 tar 包
  1. 解压
  • xz -d ***.tar.xz //先解压 xz 删除原来的 xz 包
  • xz -dk ***.tar.xz //先解压 xz 保留原来的 xz 包
  • tar -xvf ***.tar //再解压 tar
  1. 查看: xz -l ***.tar.xz //先解压 xz

别名管理


  1. 添加别名
    alias chttp='cat /etc/httpd/conf/httpd.conf' chttp
  2. 删除别名
    unalias chttp
  3. 查看别名
    alias

用户管理 和 用户权限管理 chmod、ACL、visudo

用户管理

Linux 系统同时可以支持多个用户,每个用户对自己的文件设备有特殊的权利,能够保
证用户之间互不干扰。就像手机开了助手一样,同时登陆多个 qq 账号,当硬件配置非常高
时,每个用户还可以同时执行多个任务,多个线程同时工作,提高效率。多用户是 Linux 优
于其他操作系统的一大特点


  1. 添加用户
    useradd lisi
  2. 设置密码
    passwd lisi
  3. 删除用户

userdel -r lisi -r:递归的删除目录下面文件以及子目录下文件。

备注:删除用户的时候用户组被删除

  1. 查看用户:id user
  2. 把用户加入组

gpasswd -a testuser root

把用户 testuser 加入到 root 组,加入组后 testuser 获取到 user 组及 root 组所有权限

  • 移出组

gpasswd -d testuser root


用户权限 用户分类

网站发布到 linux 服务器下面一般要设置权限,不然的话可能没法上传图片,或者没法写入
文件。Windows 中权限没有那么明显可以含糊的过去,linux 里面对权限管控非常严格。

用户权限:
drwxr-x---. 2 root root 6 4 月 11 2018 mnt

对应说明:
d 表示目录
rwx root 对 mnt 目录具有读、写和执行的权限
r-x root 组内其他用户对 mnt 目录具有读和执行权限
--- other 其他所有用户对 mnt 目录没有任何权限
. 表示 ACL 的属性
2 mnt 里面的目录数量
root 当前目录所属用户
root 当前目录所属组
6 文件文件大小(以字节为单位) 这个字段表示文件大小,如果是一个文件夹,则表示该
文件夹的大小.请注意是文件夹本身的大小,而不是文件夹以及它下面的文件的总大小!很多
人不能理解文件夹是一个特殊的文件的含义,这样的话理解文件夹大小的含义就比较困难了. 4 月 文件创建月份
11 2018 文件创建时间
mnt 目录名称
权限:就是人对文件所拥有权限,权限就是是哪个 读、写、执行
用户群体: 所有者 user u 、所属组 group g 、其他用户 other o 、所有用户 all a
权限:
r 读
w 写
x 执行
用户:
所有者 user u
所属组 group g
其他用户 other o
所有用户 all a u+g+o=a(表示所有人)
目录的 rwx
r 查看目录里面的文件(4)
w 在目录里创建或删除文件(2)
x 切换进目录(1)
文件的 rwx
r 查看文件内容
w 在文件里写内容
x 执行该文件(文件不是普通文件,是程序或脚本)

chmod 权限分配


  1. +增加权限 -删除权限
  • chmod u+x my.sh 给当前用户分配执行 my.sh 的权限
  • chmod o+r,o+w file.txt 给其他用户分配对 file.txt 的读写权限
  • chmod o+r,o+w,o+x mnt 给所有其他用户分配对 mnt 目录的进入、读取、写入权限
  • chmod -R o+r,o+w,o+x mnt 修改目录下的所有文件的权限为可读、可修改、可执行
  • chmod 755 file
  • 755 表示-rwxr-xr-x
  • chmod -R 777 wwwroot/ 修改目录下的所有文件的权限为可读、可修改、可执行
  • 需求 1:让其他人对 mnt 目录没有任何权限
  • chmod o-r,o-w,o-x mnt
  • 需求 2:所有人对 test.sh 文件具有 x 的权限
  • chmod a+x test.sh
  • 需求 3:让所有用户对 test.sh 都没有 x 权限
  • chmod a-x test.sh
  • 需求 4:让所有用户对 mnt 以及 mnt 里面的所有文件和文件夹都有 w 权限
  • chmod o-r,o-w,o-x root
  • chmod -R a+w mnt/

用户权限管理 ACL


  • 需求 5:让 zhangsan 对 opt 目录具有 rx 权限,让 lisi 对 opt 目录具有 rwx 的权限
    -m 修改

[root@localhost /]# setfacl -m u:zhangsan:rx opt/
[root@localhost /]# setfacl -m u:lisi:rwx opt/

  1. 查看 opt 拥有的 acl 权限

getfacl opt

  1. 设置 opt 的 acl 权限

setfacl -m u:zhangsan:rwx opt

  1. 删除 opt 的 user1 拥有的 acl 权限

setfacl -x u:zhangsan opt -x 删除权限

  1. 删除 opt 上所设置过的所有 acl 权限

setfacl -b opt/


用户权限管理 visudo


which 命令


图5.png

sbin 下面的命令执行权限

  1. 设置
  • 输入: visudo
  • 编辑 %zhangsan localhost=/usr/sbin/useradd
    %zhangsan localhost=/usr/sbin/userdel
  1. 使用 普通用户家 sudo
  • sudo useradd wangwu
  • sudo userdel wangwu

Linux 软件安装调试 rpm 包管理以及 yum

rpm 安装和卸载软件

在 Linux 操作系统下,几乎所有的软件均通过 RPM 进行安装、卸载及管理等操作。RPM 的
全称为 Redhat Package Manager ,是由 Redhat 公司提出的,用于管理 Linux 下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过 RPM 完成安装


  1. 挂载光盘
  • 必须把把光盘放在光驱中
  • 光驱必须放连上电脑
  • mount dev/cdrom /media 挂载
  • df 查看光盘是否挂载
  • 查找 ls | grep httpd
  1. 安装
  • rpm -ivh httpd-2.4.6-80.el7.centos.x86_64.rpm
  • rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
  • rpm -i 需要安装的包文件名
  • rpm -iv 安装过程中显示正在安装的文件信息;
  • rpm -ivh 安装过程中显示正在安装的文件信息及安装进度;
  1. 卸载软件
  • rpm -e httpd httpd 表示要卸载的软件包
  • rpm -q httpd 查找 httpd
  1. 升级包
    rpm -Uvh 软件

Yum 安装软件

Yum(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。


  1. yum 安装 rpm 包
  • yum install -y net-tools 包括 netstat ifconfig 等命令
  • yum install -y unzip zip zip 压缩减压
  • yum install -y mlocate updatedb
  • yum install -y wget
  • yum -y install psmisc pstree | grep httpd 查看进程 pstree -p 显示进程以及子进程
  1. yum 卸载 rpm 包
  • yum -y remove wget
  1. yum 搜索 npm 包
  • yum search 名称
  1. yum 查看 rpm 包
  • yum list
  • yum list | grep httpd
  • yum list updates 列出所有可更新的软件包
  • yum list installed 列出所有已安装的软件包
  1. yum 显示 rpm 包信息
  • yum info package1
  • 如:
  • yum info httpd
  • yum info zip
  • yum info unzip
  1. yum 远程安装 Apache
  • yum -y install httpd service httpd start 安装启动 apache
  1. yum 本地安装 Apache RPM 包
  • yum localinstall httpd-2.4.6-80.el7.centos.x86_64.rpm

Yum 仓库设置

  1. yum 的主配置文件 etc/yum.conf (了解)
[main] 
cachedir=/var/cache/yum
//yum 缓存的目录,yum 在此存储下载的 rpm 包和数据库,默认设置为/var/cache/yum
keepcache=0
//安装完成后是否保留软件包,0 为不保留(默认为 0),1 为保留
debuglevel=2
//Debug 信息输出等级,范围为 0-10,缺省为 2
logfile=/var/log/yum.log
//yum 日志文件位置。用户可以到/var/log/yum.log 文件去查询过去所做的更新。
pkgpolicy=newest
//包的策略。一共有两个选项,newest 和 last,这个作用是如果你设置了多个 repository,而同一软
件在不同的 repository 中同时存在,yum 应该安装哪一个,如果是 newest,则 yum 会安装最新的那个版
本。如果是 last,则 yum 会将服务器 id 以字母表排序,并选择最后的那个服务器上的软件安装。一般都
是选 newest。
distroverpkg=redhat-release
//指定一个软件包,yum 会根据这个包判断你的发行版本,默认是 redhat-release,也可以是安装的
任何针对自己发行版的 rpm 包。
tolerant=1
//有 1 和 0 两个选项,表示 yum 是否容忍命令行发生与软件包有关的错误,比如你要安装 1,2,3 三个
包,而其中 3 此前已经安装了,如果你设为 1,则 yum 不会出现错误信息。默认是 0。
exactarch=1
//有 1 和 0 两个选项,设置为 1,则 yum 只会安装和系统架构匹配的软件包,例如,yum 不会将 i686
的软件包安装在适合 i386 的系统中。默认为 1。
retries=6
//网络连接发生错误后的重试次数,如果设为 0,则会无限重试。默认值为 6. obsoletes=1
//这是一个 update 的参数,具体请参阅 yum(8),简单的说就是相当于 upgrade,允许更新陈旧的 RPM
包。
plugins=1
//是否启用插件,默认 1 为允许,0 表示不允许。我们一般会用 yum-fastestmirror 这个插件。
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_ page.php?category=yum
# Note: yum-RHN-plugin doesn't honor this. metadata_expire=1h
installonly_limit = 5
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
  1. yum 的仓库配置文件 /etc/yum.repo.d/*.repo (了解)

yum 仓库就是使用 yum 命令下载软件的镜像地址
我们通常使用 yum install 命令来在线安装 linux 系统的软件, 这种方式可以自动处理依赖性关系,并且一次安装所有依赖的软体包,但是经常会遇到从国外镜像下载速度慢,无法下载的情况.那么此时我们就需要把我们的 yum 源改为国内的镜像, centOs 中 yum 的配置文件在 /etc/yum.repos.d 目录下, 其中有多个配置文件,每一个配置文件中都可以配置一个或多个
repository, 但是最终会被合并为一个交给系统,所以多个文件只是为了方便管理。

  • Yum 安装 Nginx

  1. 安装 nginx 源

sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

  1. 查看 Nginx 源是否配置成功
  • 通过 yum search nginx 看看是否已经添加源成功。如果成功则执行下列命令安装 Nginx。
    或者 npm info nginx 也可以看看 nginx 源是否添加成功
  1. 安装 Nginx
  • sudo yum install -y nginx 3、启动 Nginx 并设置开机自动运行
  • sudo systemctl start nginx.service
  • sudo systemctl enable nginx.service

防火墙


CentOS7使用firewalld打开关闭防火墙与端口实战

  1. firewalld的基本使用
  • 启动: systemctl start firewalld
  • 关闭: systemctl stop firewalld
  • 查看状态: systemctl status firewalld
  • 开机禁用 : systemctl disable firewalld
  • 开机启用 : systemctl enable firewalld
  1. systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
  • 启动一个服务: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
  1. 配置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


Linux软件安装调试 源代码包编译安装和二进制包配置

linux 下源代码(C 语言)如何编译(安装)

  1. 先安装源代码编译的软件 gcc,make,openssl 如下:

  • yum install -y gcc make gcc-c++ openssl-devel
  • 检查系统中是否已经安装 gcc:
  • rpm -qa | grep gcc / rpm -ql gcc

  1. 三步走编译安装 linux 源代码

  1. 生成编译配置文件(Makefile)
  2. 开始编译(make)
  3. 开始安装(make install)
    安装 httpd-2.2.9.tar.gz 源代码:
    • 减压并 cd 到对应目录
    • ./configure --prefix=/usr/local/apache 安装路径设置为/usr/local/apache
    • make / make -j4
    • make install

  1. 卸载源代码安装的软件

  1. 结束进程
  • pstree|grep httpd
  • pkill httpd
  1. 删除源代码
  • cd /usr/local/
  • 直接删除源代码 rm -rf apache/

linux 下源代码安装 nodejs


  1. 下载 nodejs 源码包
  2. 减压到 usr/local/nodejs 目录
  3. ./configure
  4. make / make -j4
  5. make install

linux 下源代码安装 Apache


  1. 减压 httpd-2.2.9.tar.gz 到对应目录
  2. ./configure 编译
  • ./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc/ * --with-included-apr --enable-dav
  • --enable-so --enable-deflate=shared --enable-expires=shared
  • --enable-rewrite=shared
  1. make 4、make install
  • 启动 Apache 测试:
  • /usr/local/apache2/bin/apachectl restart
  • .查看进程: ps -le | grep httpd

二进制包配置,二进制安装配置 nodejs

二进制包里面包括了已经经过编译,可以马上运行的程序,所以二进制包的安装只需要丢到一个目录里面就可以了。

  1. 上传或者通过wget下载node二进制包

  • wget https://nodejs.org/dist/v8.9.3/node-v8.9.3-linux-x64.tar.xz
  • xz -d node-v8.9.3-linux-x64.tar.xz
  • tar -xvf node-v8.9.3-linux-x64.tar
  • mv node-v8.9.3-linux-x64 /usr/local/nodejs

  1. 配置环境变量

vi /etc/profile

  1. 最后面添加:

  • export NODE_HOME=/usr/local/nodejs/bin
  • export PATH=PATH

  1. :wq 保存,然后运行

source /etc/profile

  1. 可以用 node -v 和 npm -v 来检查下

node -v

  1. 查看环境变量是否生效

echo $PATH

Linux 内存、cpu、进程、端口、硬盘管理

内存、cup 管理 top 命令

  1. op 命令的第一行:

top - 15:31:47 up 9:30, 3 users, load average: 0.00, 0.02, 0.05

依次对应:系统当前时间 up 系统到目前为止 i 运行的时间, 当前登陆系统的用户数量, load average 后

面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况

  1. top 命令的第二行

Tasks: 133 total, 1 running, 132 sleeping, 0 stopped, 0 zombie

依次对应:tasks 表示任务(进程),133 total 则表示现在有 133 个进程,其中处于运行中
的有 1 个,132 个在休眠(挂起),stopped 状态即停止的进程数为 0,zombie 状态即僵尸
的进程数为 0 个

  1. top 命令的第三行,cpu 状态

%Cpu(s): 0.2 us, 0.4 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st

只看空闲就可以了:cpu 空闲率为 99.3%


  • us:user 用户空间占用 cpu 的百分比
  • sy:system 内核空间占用 cpu 的百分比
  • ni:niced 改变过优先级的进程占用 cpu 的百分比
  • 空闲 cpu 百分比
  • wa:IO wait IO 等待占用 cpu 的百分比
  • hi:Hardware IRQ 硬中断 占用 cpu 的百分比
  • si:software 软中断 占用 cpu 的百分比
  • st:被 hypervisor 偷去的时间

  1. top 命令的第四行,内存状态

KiB Mem : 2897496 total, 1995628 free, 191852 used, 710016 buff/cache

总内存:2.76g 空闲:1995628/1024/1024=1.9g 已经使用 0.18g 缓存区内存 0.67g
缓冲区是从主内存中特地预留出的内存,用来存放特定的一些信息,例如从磁盘中取得的文件表,程序正在读取的内容等等

  1. top 命令第七行,各进程的监控

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


  • PID — 进程 id
  • USER — 进程所有者
  • PR — 进程优先级
  • NI — nice 值。负值表示高优先级,正值表示低优先级
  • VIRT — 进程使用的虚拟内存总量,单位 kb。VIRT=SWAP+RES
  • RES — 进程使用的、未被换出的物理内存大小,单位 kb。RES=CODE+DATA
  • SHR — 共享内存大小,单位 kb
  • S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  • %CPU — 上次更新到现在的 CPU 时间占用百分比
  • %MEM — 进程使用的物理内存百分比
  • TIME+ — 进程使用的 CPU 时间总计,单位 1/100 秒
  • COMMAND — 进程名称(命令名/命令行)

内存、cup 管理 uptime 命令

top - 15:31:47 up 9:30, 3 users, load average: 0.00, 0.02, 0.05


  1. 服务器工作时间
  2. 在线用户
  3. 平均负载 一分钟,五分钟,十五分钟的负载情况

看当前登录的账户 who、查看最新操作电脑的用户 last


  • who 命令: 显示当前正在系统中的所有用户名字,使用终端设备号,注册时间。
  • whoami : 显示出当前终端上使用的用户。
  • last:last 作用是显示近期用户或终端的登录情况

进程管理查看、杀死

  1. 查看进程

  • pstree 查看进程树
  • pstree -ap 显示所有信息
  • pstree | grep httpd
  • pstree -ap | grep httpd
  • ps -au
  • ps -au |grep httpd
  • ps -aux

ps 中 aux 的含义:
显示现行终端机下的所有程序,包括其他用户的程序(a)
以用户为主的格式来显示程序状况。 (x)
显示所有程序,不以终端机来区分(u)

  1. 关闭进程

  • pkill httpd : pkill 进程的名字
  • kill 2245 : kill 进程号
  • kill -9 1234: kill -9 进程号 强制杀死

kill:执行 kill 命令,系统会发送一个 SIGTERM 信号给对应的程序。当程序接收到该 signal 信号后,将会发
生以下事情:
程序立刻停止
当程序释放相应资源后再停止
程序可能仍然继续运行
大部分程序接收到 SIGTERM 信号后,会先释放自己的资源,然后再停止。但是也有程序可能接收信号后,
做一些其他的事情(如果程序正在等待 IO,可能就不会立马做出响应,我在使用 wkhtmltopdf 转 pdf 的项
目中遇到这现象),也就是说,SIGTERM 多半是会被阻塞的。
kill -9: kill -9 命令,系统给对应程序发送的信号是 SIGKILL,即 exit。exit 信号不会被系统阻塞,所以 kill -9
能顺利杀掉进程。 

查看端口

netstat -tunpl |grep httpd


  • -t 或--tcp 显示 TCP 传输协议的连线状况。
  • -u 或--udp 显示 UDP 传输协议的连线状况。
  • -n 或--numeric 直接使用 IP 地址,而不通过域名服务器。
  • -p 或--programs 显示正在使用 Socket 的程序识别码和程序名称。
  • -l 或--listening 显示监控中的服务器的 Socket。

  • 关闭防火墙:Firewalld 关闭:systemctl stop firewalld; SELinux 关闭:setenforce 0

查看硬盘信息

df 命令作用是列出文件系统的整体磁盘空间使用情况。可以用来查看磁盘已被使用多少空间和还剩余多少空间


  • df
  • df -h 以人们易读的方式显示,总共多少 g 用了多少 g
  • df /home 查看该文件夹所在磁盘的使用情况

Linux systemctl 管理服务、防火墙 firewalld以及 SELinux 配置

使用 systemctl 管理服务

systemctl 就是 service 和 chkconfig 这两个命令的整合,在 CentOS 7 就开始被使用了,systemctl是系统服务管理器命令,它实际上将 service 和 chkconfig 这两个命令组合到一起

图6.png
  • Syetemclt 管理服务常用命令

  1. 启动服务:systemctl start httpd
  2. 关闭服务:systemctl stop httpd
  3. 重启服务:systemctl restart httpd
  4. 查看一个服务的状态:systemctl status httpd
  5. 查看一个服务是否在运行:systemctl is-active httpd
  6. 查看当前已经运行的服务:systemctl list-units -t service 6、列出所有服务: systemctl list-units -at service 注意顺序
  7. 设置开机自启动: systemctl enable httpd
  8. 停止开机自启动: systemctl disable httpd
  9. 列出所有自启动服务:
    • systemctl list-unit-files|grep enabled
    • systemctl list-unit-files|grep disabled
    • systemctl list-unit-files|grep disabled | grep httpd
  10. 使指定服务从新加载配置:systemctl reload httpd

Firewalld 防火墙的设置

从 CentOS7(RHEL7)开始,官方的标准防火墙设置软件从 iptables 变更为 firewalld,相信不少习惯使用iptables 的人会感到十分不习惯,但实际上 firewalld 更为简单易用


  1. firewalld 的基本使用:
    • 启动: systemctl start firewalld
    • 关闭: systemctl stop firewalld
    • 查看状态: systemctl status firewalld
    • 开机禁用 : systemctl disable firewalld
    • 开机启用 : systemctl enable firewalld
  2. 配置 firewall-cmd :
    • 显示状态: firewall-cmd --state
    • 查看所有打开的端口: firewall-cmd --zone=public --list-ports
    • 更新防火墙规则: firewall-cmd --reload
  3. 那怎么开启一个端口呢:
    • firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent 永久生效,没有此参数重启后失效)
    • 重新载入:
    • firewall-cmd --reload 修改 firewall-cmd 配置后必须重启
    • 查看:
    • firewall-cmd --zone= public --query-port=80/tcp
    • 删除:
    • firewall-cmd --zone= public --remove-port=80/tcp --permanent

SELinux 防火墙的设置

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。阿里云安装的 centos 默认已经关闭了。西部数码云服务器默认也是关闭的

  • 查看 SELinux 状态

  1. /usr/sbin/sestatus -v ##如果 SELinux status 参数为 enabled 即为开启状态
    SELinux status: enabled
  2. getenforce ##也可以用这个命令检查

  • 关闭 SELinux
  1. 临时关闭(不用重启机器)

  • setenforce 0 ##设置 SELinux 成为 permissive 模式
  • setenforce 1 设置 SELinux 成为 enforcing 模式

  1. 修改配置文件需要重启机器

修改/etc/selinux/config 文件将 : SELINUX=enforcing 改为 SELINUX=disabled

你可能感兴趣的:(Linux)