liunx-基本指令集合--2

编程知识 更新时间:2023-04-17 00:40:20

liunx-基本指令集合--2

  • 一:用户
    • 1> useradd 、userdel
    • 2> passwd
      • 1. 修改用户密码
      • 2. 显示账号密码信息
      • 3. 帐户密码状态
      • 4. 锁定、解锁用户
      • 5. 更改用户密码使用情况
      • 6. /etc/shadow各字段含义
    • 3> 用户处理
      • 1. 删除
      • 2. 切换用户
    • 4> 添加批量用户
  • 二: 权限管理
    • 1> 用户组管理
      • 1. 用户账号管理
        • A:useradd
    • 2> 用户口令的管理
    • 3> 用户组的管理
      • 1. 主组和附加组的关系
      • 2. 用户组配置文件/etc/group
      • 3. 新增组命令
      • 4. 删除组命令
      • 5. 修改用户组的属性命令
      • 6. 管理用户入组
      • 7. 组切换
    • 4> ACL权限
    • 5> 文件相关
      • 1. df -h磁盘使用情况统计
      • 2. mount 挂载
  • 三: 其他常用命令一览
    • 1> date 时间
    • 2> ps 显示当前进程的状态
    • 3> top 监控linux的系统状况
    • 4> pidof指定名称进程的进程
    • 5> kill
      • 1. kill 删除执行中的程序
      • 2. killall杀死进程
    • 6> ifconfig显示或配置网络设备的命令
    • 7> uname显示操作系统信息
    • 8> uptime 时间和系统的平均负载
    • 9> free 物理和交换内存总量
    • 10> who&last&history
      • 1. who显示系统使用者正在上面
      • 2. last 显示用户最近登录信息
      • 3. history显示与管理历史记录
    • 11> sosreport 数据收集工具
    • 12> pwd显示工作目录
    • 13> wc 用于计算字数
    • 14> stat 显示 inode 内容
    • 15> cut 显示起 num1-num2 文字
    • 16> diff 比较文件的差异
    • 17> dump 备份文件系统
    • 18> restore 写回
    • 19> cp 制文件和目录
    • 20> mv 移动
    • 21> rm 删除
    • 22> dd 读取、转换并输出数据
    • 23> file 辨识文件类型
    • 24> lsof 列出已经打开的所有文件
      • 1. 基本输出
      • 2. demo
    • 25> vmstat 展现服务器的状态值
      • 1. 介绍
      • 2. demo
    • 26> dmesg 显示开机信息
    • 27> path 环境变量
      • 1. 介绍
      • 2. PATH demo
    • 28> read 从标准输入读取数值
      • 1. 介绍
      • 2. demo
    • 29> rsyslog 系统日志的处理转发
      • 1. 介绍
      • 2. facility:设施、信道
      • 3. 日志级别
      • 4.rsyslog配置
  • 四:Vim 与 Shell 命令

一:用户

1> useradd 、userdel

作用:
命令用于建立用户帐号
useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码
使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
userdel
删除帐号

格式:
useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号]

参数说明:

参数说明
-c<备注>加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录>指定用户登入时的起始目录。
-D变更预设值.
-e<有效期限>指定帐号的有效期限。
-f<缓冲天数>指定在密码过期后多少天即关闭该帐号。
-g<群组>指定用户所属的群组。
-G<群组>指定用户所属的附加群组。
-m自动建立用户的登入目录。
-M不要自动建立用户的登入目录。
-n取消建立以用户名称为名的群组.
-r建立系统帐号。
-s指定用户登入后所使用的shell。
-u指定用户ID

用法:
新添加的用户指定home目录
useradd -d /home/user aa

2> passwd

linux passwd命令用来更改使用者的密码

语法:

passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]

必要参数说明:

参数说明
-d删除密码
-f强迫用户下次登录时必须修改口令
-w口令要到期提前警告的天数
-k更新只能发送在过期之后
-l停止账号使用
-S显示密码信息
-u启用已被停止的账户
-x指定口令最长存活期
-g修改群组密码
-i口令过期后多少天停用账户

选择参数:

参数说明
–help显示帮助信息
–version显示版本信息
使用:

1. 修改用户密码

passwd runoob

2. 显示账号密码信息

passwd -S runoob

3. 帐户密码状态

passwd --status 帐户

LK:密码被锁定
NP:没有设置密码
PS:密码已设置

4. 锁定、解锁用户

passwd -l oldboy  #锁定用户 oldboy 的密码
passwd -u oldboy # 解锁用户 oldboy 的密码

5. 更改用户密码使用情况

chage

参数含义
-d设置最近一次更改密码时间,0下次登陆系统强制修改密码
-m设置用户两次改变密码之间使用“最小天数”
-M设置用户两次改变密码之前使用“最大天数”
-W设置密码更改告警时间,将过期警告天数设为“警告天数”
-I设置密码过期天数后,密码为失效状态
-E设置用户过去时间,账户失效后无法登陆
-l显示用户详细信息(各个时间段)
chage -m 2 oldboy
chage -M 10 oldboy
chage -W 5 oldboy

6. /etc/shadow各字段含义

cat /etc/shadow
ceshi1:!!:18183:0:99999:7:::
/etc/shadow 由’:'分割成9个字段,每个字段的具体含义如下

字段名称含义
用户登陆名用户的账户名称
加密后的密码用户密码,这是加密过的口令(未设置密码为!!)
最近一次密码更改时间从1970年到最近一次更改密码时间之间过了多少天
密码最少使用几天密码最少使用几天才可以更改密码(0表示无限制)
密码最长使用几天密码使用多少天需要修改密码(默认99999永不过期)
密码到期前警告期限密码过期前多少天提醒用户更改密码(默认过期提前7天告警)
密码到期后保持活动的天数在此期间内,用户依然可以登陆系统并更改密码,指定天数过后,账户被锁定
账户到期时间从1970年起,账户在这个日期前可使用,到期后失效
标志保留

3> 用户处理

1. 删除

userdel -r username
-r 选项表示在删除用户的同时删除用户的家目录;在删除用户的同时如果不删除用户的家目录,那么家目录就会变成没有属主和属组的目录,也就是垃圾文件
同时可以手动删除,但一些文件要删除赶紧后才能新建此账户成功;

2. 切换用户

当前用户: who ami
切换用户: su root
查看用户环境信息:env

#代表root用户
   $代表普通用户 

参数

字段名称含义
  • | 当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。
    -l | 同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。
    -p | 表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。
    -m | 和 -p 一样;
    -c 命令 | 仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。
su -c 'passwd -S u-dev2' root
  • 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的

who am i与whoami
在未切换用户身份之前,whoami 和 who am i 命令的输出是一样的,但使用 su 命令切换用户身份后,使用 whoami 命令打印的是切换后的用户名,而 who am i 命令打印的仍旧是登陆系统时所用的用户名

4> 添加批量用户

先编辑一个文本用户文件:每一列按照/etc/passwd密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号。一个范例文件user.txt内容如下:

cat user.txt
user01:x:1010:1010:user dec1:/home/user01:/bin/bash
user02:x:1003:1011:user dec2:/home/user02:/bin/bash

以root身份执行命令 /usr/sbin/newusers,从刚创建的用户文件user.txt中导入数据,创建用户

newusers < user.txt

然后可以执行命令 vipw 或 vi /etc/passwd 检查 /etc/passwd 文件是否已经出现这些用户的数据,并且用户的宿主目录是否已经创建

 grep user /etc/passwd  /etc/shadow

执行命令/usr/sbin/pwunconv:将 /etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadow的shadow密码栏删掉。这是为了方便下一步的密码转换工作,即先取消 shadow password 功能

[root]# pwunconv
[root]# grep user /etc/passwd /etc/shadow
/etc/passwd:user01:$6$4nRCI2BqG8/$MUVJvj4AUHvCigCJa209ALwmtlqqb7x89/akPLQV4C5tvtxQSSyGF.N74HQimPyAezJl9riS.Q/0vHCJ1u1Nm1:1010:1010:user dec1:/home/user01:/bin/bash

文件-格式

用户名:密码
实例文件 passwd.txt 内容如下:

user01:123456
user02:123456

以 root 身份执行命令 /usr/sbin/chpasswd:创建用户密码,chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏

vi passwd.txt
chpasswd < passwd.txt
rep user /etc/passwd /etc/shadow
打印:/etc/passwd:user01:$6$eFL/r/bByqMA$U1RmOwaGvKnR6eYc3LrWLij2r6xoSvVMZQq/COOgMKDkkkas8JdjOHZzmxPq07vqk/s2lkYYwyZbLyjWGrBv21:1010:1010:user dec1:/home/user01:/bin/bash
#密码和初始密码不一样了,说明passwd.txt中的密码已经被转码到/etc/passwd文件中

确定密码经编码写入/etc/passwd的密码栏后:执行命令 /usr/sbin/pwconv 将密码编码为 shadow password,并将结果写入 /etc/shadow

pwconv
grep user /etc/passwd /etc/shadow

就完成了大量用户的创建了,之后可以到/home下检查这些用户宿主目录的权限设置是否都正确,并登录验证用户密码是否正确

su - user01  下面输入密码

二: 权限管理

1> 用户组管理

Linux中管理用户一般需要完成以下三个方面的工作:

用户账号的添加、删除和修改
用户口令的管理
用户组的管理

1. 用户账号管理

在Linux中,用户的账号类型大体可以分为两种,一种是超级管理员用户 root,root用户拥有对系统的全部权限,另外一种是普通用户
用户账号配置文件/etc/passwd
在Linux当中,一切皆为文件,不管你做什么操作实际上都是操作系统上的一个又一个的文件;通过/etc/passwd这个文件来管理用户的账号信息

[root@Server01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
………………………中间部分省略……………………………
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:977:975::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
rngd:x:976:974:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin


UID和GID:普通的用户可以通过用户名和组名去识别相关信息,但是Linux中它并不会识别用户名,它只认识ID,因为计算机只识别二进制数,所以对于数字更加敏感。管理员用户的UID为0,普通用户的UID是从1000起。
查看用户的UID和GID

id user01
uid=1000(user01) gid=1000(user01) 组=1000(user01)

按照UID进行分类的话可以将Linux的用户分为三类

分类UID
root 用户UID:0
伪(系统)用户UID:1-999(其中1-200为系统保留账号,系统自动创建的,201-999是预留给用户创建系统账号的。)
普通用户UID:1000-60000

伪用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。简单来说伪用户就是用来方便运行系统或服务使用的

比如以下这些伪用户

bin 拥有可执行的用户命令文件 
sys 拥有系统文件 
adm 拥有帐户文件 
uucp UUCP使用 
lp lp或lpd子系统使用 
nobody NFS使用

A:useradd

useradd 【选项】 用户名

选项类型含义
-c comment指定一段注释性描述;useradd -c test-user user1(对照/etc/passwd文件 user1❌1001:1001:test-user:/home/user1:/bin/bash)
-d目录 指定用户主目录;useradd -d /home/user10 user02 (/etc/passwd对照 user02❌1002:1002::/home/user10:/bin/bash)
-g用户组 指定用户所属的用户组。//所属组一般是用户初始组,只能是一个,建议不要修改,默认组名和用户名同名 //此例在后续用户组管理的时候进行演示
-G用户组,用户组 指定用户所属的附加组。 //此例在后续用户组管理的时候进行演示
-sShell文件 指定用户的登录Shell。
-u用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
删除用户
userdel 【选项】 用户名
选项类型
-r,它的作用是把用户的主目录、自动创建的邮件目录一起删除

2> 用户口令的管理

删除用户
修改用户密码
usermod 【选项】 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
在上面有部分介绍

3> 用户组的管理

将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。一般情况下,用户的主组和用户同名

1. 主组和附加组的关系

用户的主组是用户一登录的时候就会有该用户组的权限。当有一个用户属于该主组的时候,这个主组不可被删除。例如user01的主组为user01,此时使用删除组的命令groupdel user01会失败
但是可以修改用户的主组,之后再删除

usermod -g user02 user01
cat /etc/passwd # 查看权限
groupdel user01 

2. 用户组配置文件/etc/group

[root@Server01 ~]# cat /etc/group
root:x:0:
……以下省略

用户的组配置文件的含义一般如下:组名:口令:组标识号:组内用户列表

参数含义
组名用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
口令字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。
组内用户列表是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

3. 新增组命令

groupadd 【选项】 用户组

参数含义
-gGID 指定新用户组的组标识号(GID)。
-o一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同

4. 删除组命令

groupdel 用户组

5. 修改用户组的属性命令

参数含义
-gGID 为用户组指定新的组标识号。
-o与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

6. 管理用户入组

gpasswd 【选项】 组名 (这里的组是指的是附加组)

参数含义
-a用户名把用户加入组
-d 用户名把用户从组中删除

7. 组切换

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:

newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。​​​​​​​

4> ACL权限

ACL和UGO的区别

类型区别
UGO基本权限只能一个用户、一个组合、其他人这三个对象进行授权
ACL文件权限管理设置不同用户,不同的基本权限(r、w、x),对象数量不同

UGO是针对用户、组、其他人三个对象的文件授权,ACL是可以针对指定用户指定组和其他人的文件授权。

查看权限

getfacl  /test/t1    
============
# file: test/t1                                           //文件的位置
# owner: root                                        //文件拥有者
# group: root                                          //文件所属组
user::rw-                                          //用户的权限
group::r--                                  //组的权限
other::rw-                                             //其他人的权限

设置用户zhangsan、lisi权限

setfacl -m u:zhangsan:rwx  /test/t1        //给zhangsan授予可以对文件读写执行的权利
setfacl -m u:lisi:rwx /test/t1        //给lisi授予可以对文件读写执行的权利
getfacl /test/t1                  //查看t1的ACL权限

查看权限

 ll /test/t1
-rw-rwxrw-+ 1 root root 0 9月  27 14:46 /test/t1
============================
用ls命令查看后会发发现权限字段上多了一个+号,这个加号代表着有ACL权限,不止有显示的这些权限,具体权限用getfacl命令查看

对组S1进行ACL授权

setfacl -m g:S1:rw /test/t1              //给S1组授予对文件t1读写权限
getfacl /test/t1    
...
group:S1:rw-                         //授权成功
.......

对其他人授权

setfacl -m o::rwx /test/t1  //给其他人授予对文件t1的读写执行的权限
getfacl /test/t1           //查看t1ACL权限
.....
other::rwx                  //成功
.......

删除ACL权限

命令setfacl  -x   对象:名称      文件

删除用户的权限

setfacl   -x u:zhangsan   /test/t1        //删除用户张三对文件的权限
getfacl /test/t1          //查看t1的ACL权限
.....
user:lisi:rwx          //只有lisi的权限在,张三的权限已经移除
.........

删除组的权限

setfacl -x g:S1  /test/t1              //删除组S1的权限
 getfacl /test/t1                 //查看问价t1的ACL权限

清空所有设置的ACL权限(将文件的ACL权限恢复到默认)

命令:setfacl -b 文件

setfacl   -b   /test/t1         //清空ACL的所有扩展权限
getfacl  /test/t1       //查看t1的ACL权限
ll /test/t1                                        //查看t1文件信息
-rw-r--rwx. 1 root root 0 9月  27 14:46 /test/t1             //原本的+号不在了,没有设置ACL权限

5> 文件相关

1. df -h磁盘使用情况统计

df -h :显示目前在Linux系统上的文件系统的磁盘使用情况统计

参数含义
Filesystem-表示该文件系统位于哪个分区,因此该列显示的是设备名称;
Used-表示用掉的磁盘空间大小;
Available-表示剩余的磁盘空间大小;
Use%-磁盘空间使用率;
Mounted on-文件系统的挂载点,也就是磁盘挂载的目录位置。所谓的挂载就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,也就是说进入该目录就可以读取该分区的意思,这个动作我们称为挂载,那个进入点的目录我们称为挂载点。

2. mount 挂载

Linux mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件
语法:
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,…]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir

参数说明
-V显示程序版本
-h显示辅助讯息
-v显示较讯息,通常和 -f 用来除错。
-a将 /etc/fstab 中定义的所有档案系统挂上。
-F这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
-f通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
-n一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
-s-r等于 -o ro
-w等于 -o rw
-L将含有特定标签的硬盘分割挂上。
-U将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
-t指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
-o async打开非同步模式,所有的档案读写动作都会用非同步模式执行。
-o sync在同步模式下执行。
-o atime、-o noatime当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
-o auto、-o noauto打开/关闭自动挂上模式。
-o defaults使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
-o dev、-o nodev-o exec、-o noexec允许执行档被执行。
-o suid、-o nosuid允许执行档在 root 权限下执行。
-o user、-o nouser使用者可以执行 mount/umount 的动作。
-o remount将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
-o ro用唯读模式挂上。
-o rw用可读写模式挂上。
-o loop=使用 loop 模式用来将一个档案当成硬盘分割挂上系统。

三: 其他常用命令一览

1> date 时间

语法
用法:#date [参数选项] [+格式]
或者:date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]

参数说明语法
d, --date=STRING显示 datestr 中所设定的时间 (非系统时间)
-s, --set=STRING将系统时间设为 datestr 中所设定的时间
-u, --utc, --universal打印或设置协调世界时(UTC)
–version显示版本编号
–help显示辅助讯息
时间格式符号语法
%印出 %
%n下一行
%t跳格
%H小时(00…23)
%I小时(01…12)
%k小时(0…23)
%l小时(1…12)
%M分钟(00…59)
%p显示本地 AM 或 PM
%r直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%R24小时制方式显示时间,相当于%H:%M
%s从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S秒(00…60)
%T直接显示时间 (24 小时制)
%X相当于 %H:%M:%S
%z数字方式显示时区
%Z字母缩写方式显示时区
日期格式符号语法
%a星期几 ,缩写(Sun…Sat)
%A星期几 ,完整英文星期(Sunday…Saturday)
%b月份 (Jan…Dec)
%B月份 (January…December)
%c直接显示日期与时间
%d日 (01…31)
%D直接显示日期 (mm/dd/yy)
%e一个月中的第几天,类似%_d
%F完整的日期,相当于%Y-%m-%d
%h同 %b
%j一年中的第几天 (001…366)
%m月份 (01…12)
%u一周中的第几天 (1…7) (1是星期一)
%U一年中的第几周 (00…53) (以 Sunday 为一周的第一天的情形)
%w一周中的第几天 (0…6)(0是星期天)
%W一年中的第几周 (00…53) (以 Monday 为一周的第一天的情形)
%x直接显示日期 (mm/dd/yy)
%y年份的最后两位数字 (00.99)
%Y 完整年份 (0000…9999)
demo语法
date查看系统日期及时间;Sat Jan 22 15:08:12 CST 2022
date +%F以YYYY-MM-DD显示日期;2022-01-22
date +%D以MM/DD/YY显示日期;01/22/22
date +%x以MM/DD/YYYY显示日期;01/22/2022
date +%Y获取系统年份;2022
date +%m获取系统月份;01
date +%d获取系统日子;22
date +%a\ date +%A\date +%u\date +%w获取系统星期值;Sat\Saturday\6\6
date +%z\date +%Z获取系统时区;+0800\CST
date +%W\date +%U查询当前日期是一年中的第几周;03\03
date +%T\date +%X获取系统时间;15:51:42\03:53:30 PM
date +%r显示十二小时制时间;03:51:58 PM
date +%R显示24小时制时间;15:52
date +%H-%M.%S\date +%H.%M.%S按照指定样式显示时间;15-55.07\15.55.10
date +%s从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数;1642838148
date -s设置系统时间或者时间及 日期
date +%F%n%T日期和时间分行显示

2> ps 显示当前进程的状态

ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器
语法:
ps [options] [–help]

参数含义
ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A列出所有的进程
-w显示加宽可以显示较多的资讯
-au显示较详细的资讯
-aux显示所有包含其他使用者的进程
au(x)输出格式 :USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

输出格式含义

参数含义
USER行程拥有者
PIDpid
%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所执行的指令
ps -ef | grep 进程关键字  \\查找指定进程格式
ps -A  \\显示进程信息
ps -u root //显示root进程用户信息  -显示指定用户信息
ps -ef //显示所有命令,连带命令行

3> top 监控linux的系统状况

top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。在Linux操作系统中,top是使用最频繁,也是比较全的一个命令

TOP参数详解
top -dnumber代表秒数 默认5秒 刷新一次
top -b以批次的方式执行top
top -b‘批量模式’,用来将输出重定向到指定文件,一般配合-n 指定输出几次统计信息
top -c显示产生进程的完成命令
top -p指定pid 多个pid以‘逗号’分开,只显示指定pid进程的状态
TOP 前五行信息详解
第一行系统时间、运行时间、登录终端 数、系统负载;top - 10:10:15 up 8:06, 4 users, load average: 0.00, 0.00, 0.00
第二行进程数、运行中的进程、睡眠总数、停止数、僵尸进程;Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie
第三行u(s)-用户占用资源、sy-系统占用资源、ni-改变过优先级、id 空占用资源、%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
第四行内存、总内存、使用、空存、缓存;MiB Mem : 2425.4 total, 835.1 free, 700.8 used, 889.5 buff/cache
第五行虚拟内存总量、使用、使用、被提前加载;MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1522.3 avail Mem
top进程信息参数含义
PID进程id
USER父进程id
PR优先级
NI谦让度值 nice值。负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SHR共享内存大小,单位kb
S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND命令名/命令行

4> pidof指定名称进程的进程

pidof 命令用于查找指定名称进程的进程ID,是命令 killall5 的一个软链接。

找出进程 ID 的目的通常是根据进程 ID 进一步确认进程的运行状态、杀掉进程或者发送一个信号给它。

pidof [-s] [-c] [-n] [-x] [-m] [-o omitpid[,omitpid..]] [-o omitpid[,omitpid..]..]  program [program..]

选项说明
-s只返回一个 PID
-c只显示运行在 root 目录下的进程,这个选项只对 root 用户有效
-x显示指定脚本名称的进程
-o OMITPID指定不显示的进程ID。该选项可以出现多次
-m与 -o 选项一起使用,使得 argv[0] 与 argv[1] 和被忽略进程相同的进程同时被忽略。一般用于忽略由同名 Shell 脚本启动的进程,因为 argv[0] 为 Shell,一般为 /bin/bash,argv[1] 为脚本名称

示例

pidof sshd \\ 查看程序名称为 sshd 的进程 ID
pidof -x sleep.sh    \\ 查看由 Shell 脚本启动的进程 ID

5> kill

1. kill 删除执行中的程序

kill 命令用于删除执行中的程序或工作;kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 jobs 指令查看
语法

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数说明
-l <信息编号>若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
-s <信息名称或编号>指定要送出的信息。
[程序][程序]可以是程序的PID或是PGID,也可以是工作编号。

使用 kill -l 命令列出所有可用信号。

最常用的信号信号
1 (HUP)重新加载进程。
9 (KILL)杀死一个进程。
15 (TERM)正常停止一个进程。

demo

kill 12345  \\杀死进程
kill -KILL 123456 \\ 强制杀死进程
kill -HUP pid \\发送SIGHUP信号,可以使用一下信号
kill -9 123456 \\ 彻底杀死进程
kill -l  \\显示信号
kill -9 $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程--死指定用户所有进程
kill -u hnlinux //方法二

2. killall杀死进程

inux killall 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程;
kill 命令杀死指定进程 PID,需要配合 ps 使用,而 killall 直接对进程对名字进行操作,更加方便
语法

 killall [选项]  name \\name - 进程名
 
参数说明
-e–exact 进程需要和名字完全相符
-I–ignore-case 忽略大小写
-g–process-group 结束进程组
-i–interactive 结束之前询问
-l–list 列出所有的信号名称
-q–quite 进程没有结束时,不输出任何信息
-r–regexp 将进程名模式解释为扩展的正则表达式。
-s–signal 发送指定信号
-u–user 结束指定用户的进程
-v–verbose 显示详细执行过程
-w–wait 等待所有的进程都结束
-V–version显示版本信息
–help显示帮助信息

demo

killall -9 php-fpm          //结束所有的 php-fpm 进程

6> ifconfig显示或配置网络设备的命令

ifconfig命令有点类似于Windows的ipconfig命令

ifconfig是Linux中用于显示或配置网络设备的命令,英文全称是network interfaces configuring

ifconfig命令用于显示或设置网络设备。

ifconfig可设置网络设备的状态,或是显示目前的设置

语法

ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
===============================


add<地址>:设置网络设备IPv6的ip地址;
del<地址>:删除网络设备IPv6的IP地址;
down:关闭指定的网络设备;
<hw<网络设备类型><硬件地址>:设置网络设备的类型与硬件地址;
io_addr<I/O地址>:设置网络设备的I/O地址;
irq<IRQ地址>:设置网络设备的IRQ;
media<网络媒介类型>:设置网络设备的媒介类型;
mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;
metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;
mtu<字节>:设置网络设备的MTU;
netmask<子网掩码>:设置网络设备的子网掩码;
tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;
up:启动指定的网络设备;
-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;
-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;
-promisc:关闭或启动指定网络设备的promiscuous模式;
IP地址:指定网络设备的IP地址;
网络设备:指定网络设备的名称。

demo

[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:16:3E:00:1E:51  
          inet addr:10.160.7.81  Bcast:10.160.15.255  Mask:255.255.240.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0
          TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3607197869 (3.3 GiB)  TX bytes:6115042 (5.8 MiB)
 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:56103 errors:0 dropped:0 overruns:0 frame:0
          TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5079451 (4.8 MiB)  TX bytes:5079451 (4.8 MiB)
参数含义
eth0表示第一块网卡,其中HWaddr表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是00:16:3E:00:1E:51
inet addr用来表示网卡的IP地址,此网卡的IP地址是10.160.7.81,广播地址Bcast:10.160.15.255,掩码地址Mask:255.255.240.0
lo表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回坏地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道
第一行连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。
第二行网卡的IP地址、子网、掩码。
第三行UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。
第四、五行接收、发送数据包情况统计。
第七行接收、发送数据字节数统计信息
ifconfig eth0 up
ifconfig eth0 down  \\启动关闭指定网卡
ifconfig eth0 add 33ffe:3240:800:1005::2/64    \\为网卡eth0配置IPv6地址
ifconfig eth0 del 33ffe:3240:800:1005::2/64    \\为网卡eth0删除IPv6地址
ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE  \\用ifconfig修改MAC地址

ifconfig eth0 192.168.2.10
ifconfig eth0 192.168.2.10 netmask 255.255.255.0
ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255  \\配置IP地址
ifconfig eth0 arp    \\开启网卡eth0 的arp协议
ifconfig eth0 -arp   \\关闭网卡eth0 的arp协议
ifconfig eth0 mtu 1500    \\设置能通过的最大数据包大小为 1500 bytes
ifconfig   \\处于激活状态的网络接口
ifconfig -a  \\所有配置的网络接口,不论其是否激活
ifconfig eth0  \\显示eth0的网卡信息

7> uname显示操作系统信息

Linux uname(英文全拼:unix name)命令用于显示操作系统信息,例如内核版本、主机名、处理器类型等。。
uname 可显示电脑以及操作系统的相关信息
语法

uname [-amnrsv][--help][--version] 
参数说明
-a 或–all显示全部的信息,包括内核名称、主机名、操作系统版本、处理器类型和硬件架构等。。
-m 或–machine显示处理器类型。
-n 或–nodename显示主机名。
-r 或–release显示内核版本号。
-s 或–sysname显示操作系统名称。
-v显示操作系统的版本。
–help显示帮助。
–version显示版本信息。
-p显示处理器类型(与 -m 选项相同)
uname -a \\显示系统信息
uname -m \\显示计算机类型
uname -n \\显示计算机名
uname -r \\显示操作系统发行编号
uname -s \\显示操作系统名称
uname -v \\显示系统版本与时间

8> uptime 时间和系统的平均负载

uptime 用于显示系统总共运行了多长时间和系统的平均负载。

无选项 uptime 命令会显示一行信息,依次为:当前时间、系统已经运行了多长时间、目前有多少用户登录、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。输出结果等同于 top 命令汇总区的第一行。
语法

uptime [options]
参数说明
-p, --pretty采用可读友好的格式输出系统已运行时长
-h, --help显示帮助信息
-s, --since以格式 yyyy-mm-dd HHSS format 输出系统启动时间
-V, --version显示版本信息

9> free 物理和交换内存总量

free命令提供有关物理和交换内存总量以及系统中的空闲和已用内存和交换空间的信息;
在没有任何选项的情况下使用时,free命令将显示有关内存和交换kibibyte的信息。 1 kibibyte(KiB)是1024字节。
语法

free [OPTIONS]

输出将包括三行,一个标题,一行用于内存,一行用于交换

             total        used        free      shared  buff/cache   available
Mem:        8075208     3204964     1310540      551232     3559704     4198340
Swap:       2097148           0     2097148
参数说明
total此数字表示应用程序可以使用的内存总量。
used二手记忆。 计算公式为:used = total - free - buffers - cache免费 - 免费/未使用的内存。
shared此列可以忽略,因为它没有任何意义。 这只是为了向后兼容。
buff / cache内核缓冲区和页面缓存和slab使用的组合内存。 /如果应用程序需要,可以随时回收此内存。 如果要将缓冲区和缓存显示在两个单独的列中,请使用-w选项。
available无需交换即可用于启动新应用程序的内存量估计值

free命令还允许您指定测量内存的单位。 有效选项包括:

参数说明
-b, - bytes以字节为单位显示输出。
–kilo以千字节为单位显示输出(1KB = 1000bytes)。
–mega以兆字节为单位显示输出。
–giga以千兆字节显示输出。
–tera以TB为单位显示输出。
-k, - kibi以千比特显示输出。 (1KiB = 1024字节)。 这是默认单位。
-m, - mebi以mebibytes显示输出。
-g, - gibi以gibytes显示输出。
–tebi以tebibytes显示输出。
–peti以pebibytes显示输出。
–si而不是1024,使用1000的幂。例如–mebi --si等于–mega
free -h   \\ 可读格式显示内存使用情况
=======================
              total        used        free      shared  buff/cache   available
Mem:           487M        219M         54M        4.5M        214M        228M
Swap:          1.5G          0B        1.5

要以兆字节为单位显示输出
free --mega
=========================
total        used        free      shared  buff/cache   available
Mem:           8075        4022         233         614        3819        3336
Swap:          2097           0        2097
要显示显示列总计的行,请使用-t选项
free -h -t
=======================
             total        used        free      shared  buff/cache   available
Mem:           7.7G        3.9G        483M        526M        3.4G        3.2G
Swap:          2.0G          0B        2.0G
Total:         9.7G        3.9G        2.5G
free -s 5  \\连续打印输出
free -s 5 -c 10 \\要显示特定次数的结果

10> who&last&history

1. who显示系统使用者正在上面

Linux who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。

使用权限:所有使用者都可使用
语法:

who - [husfV] [user]
参数说明
-H 或 --heading显示各栏位的标题信息列;
-i 或 -u 或 --idle显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;
-m此参数的效果和指定"am i"字符串相同;
-q 或–count只显示登入系统的帐号名称和总人数;
-s此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
-w 或-T或–mesg或–message或–writable显示用户的信息状态栏;
–help在线帮助;
–version显示版本信息
who  //显示当前登录系统的用户
who -l -H  \\显示用户登录来源 
who -T -H \\显示终端属性
who -m -H \\只显示当前用户
who -q \\精简模式显示

2. last 显示用户最近登录信息

Linux last 命令用于显示用户最近登录信息。

单独执行 last 指令,它会读取位于 /var/log/目录下,名称为 wtmp 的文件,并把该文件记录登录的用户名,全部显示出来

语法

last [options] [username...] [tty...]
参数说明
-R省略主机名 hostname 的列
-a把从何处登入系统的主机名称或IP地址显示在最后一行。
-d将IP地址转换成主机名称。
-f<记录文件>指定记录文件。
-n<显示行数>或-<显示行数>显示名单的行数。
-R不显示登入系统的主机名称或IP地址。
-x显示系统关机,重新开机,以及执行等级的改变等信息
username显示指定用户 username 的登录信息。
ttytty 设置登录的终端,tty 的名称可以缩写, last 0 与 last tty0 相同
last -R -2  \\显示两行,并省略主机名 hostname 的列
 last -R -2 \\显示两行,并省略主机列
 last \\一般显示方法
 last -n 5 -R   \\简略显示,并指定显示的个数
 last -n 5 -a -i \\ 显示最后一列显示主机 IP 地址

3. history显示与管理历史记录

history的英文单词来源于它自己,主要功能是用于显示与管理历史记录。linux系统默认会记录用户所执行过的所有命令,可以使用history命令查阅它们,也可以对其命令进行修改和删除操作
语法

history 【参数】/ history 【参数】文件
参数说明
-c删除所有条目从而清空历史列表。
-d偏移量 从指定位置删除历史列表。
-a将当前绘画的历史行追加到历史文件中
-n从历史文件中读取所有未被读取的行
-r读取历史文件并将内容追加到历史列表中
-w将当前历史写入到历史文件中,并追加到历史列表中
-p对每一个 ARG 参数展开历史并显示结果,而不存储到历史列表中
-s以单条记录追加 ARG 到历史列表中

调用命令行历史

# 重复前一个命令方法 
重复前一个命令使用上方向键,并回车执行 
1. 按 !! 并回车执行
2. 输入!-1 并回车执行
3. 按 Ctrl+p 并回车执行

使用up(向上)和down(向下)键来上下浏览从前输入的命令
ctrl-r来在命令历史中搜索命令
(reverse-i-search)`’:
Ctrl+g:从历史搜索模式退出

11> sosreport 数据收集工具

一个可扩展、可移植的支持数据收集工具。它是一个从类 Unix 操作系统中收集系统配置详细信息和诊断信息的工具;
当用户提出支持服务单时,他/她必须运行此工具并将由 Sosreport 工具生成的结果报告发送给 Red Hat 支持人员。然后,执行人员将根据报告进行初步分析,并尝试找出系统中的问题。不仅在 RHEL 系统上,你可以在任何类 Unix 操作系统上使用它来收集系统日志和其他调试信息

12> pwd显示工作目录

Linux pwd(英文全拼:print work directory) 命令用于显示工作目录。

执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称
语法

pwd [--help][--version]
===================
--help 在线帮助。
--version 显示版本信息

13> wc 用于计算字数

Linux wc命令用于计算字数。

利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
语法

wc [-clw][--help][--version][文件...]
参数说明
-c或–bytes或–chars只显示Bytes数。
-l或–lines显示行数。
-w或–words只显示字数。
–help在线帮助。
–version显示版本信息。

demo

wc testfile  \\使用 wc统计   92 598 testfile       # testfile文件的行数为3、单词数92、字节数598
wc testfile testfile_1 testfile_2   #统计三个文件的信息

14> stat 显示 inode 内容

Linux stat 命令用于显示 inode 内容。

stat 以文字的格式来显示 inode 的内容

语法

stat [文件或目录]
tat testfile     \\看 testfile 文件的inode内容内容
========================================
File: `testfile'
  Size: 102             Blocks: 8          IO Block: 4096   regular file
Device: 807h/2055d      Inode: 1265161     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-08-13 14:07:20.000000000 +0800
Modify: 2014-08-13 14:07:07.000000000 +0800
Change: 2014-08-13 14:07:07.000000000 +0800

15> cut 显示起 num1-num2 文字

Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字
语法
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

cut  [-bn] [file]
cut [-c] [file]
cut [-df] [file]

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一

参数说明
-b以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c以字符为单位进行分割。
-d自定义分隔符,默认为制表符。
-f与-d一起使用,指定显示哪个区域。
-n取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除

demo

who
==================================
rocrocket :0           2009-01-08 11:07
rocrocket pts/0        2009-01-08 11:23 (:0.0)
rocrocket pts/1        2009-01-08 14:15 (:0.0)


who|cut -b 3
=======================
c

16> diff 比较文件的差异

Linux diff命令用于比较文件的差异。

diff以逐行的方式,比较文本文件的异同处。所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录
语法

diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
参数说明
-<行数>指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
-a或–textdiff预设只会逐行比较文本文件。
-b或–ignore-space-change不检查空格字符的不同。
-B或–ignore-blank-lines不检查空白行。
-c显示全部内文,并标出不同之处。
-C<行数>或–context<行数>与执行"-c-<行数>"指令相同。
-d或–minimal使用不同的演算法,以较小的单位来做比较。
-D<巨集名称>或ifdef<巨集名称>此参数的输出格式可用于前置处理器巨集。
-e或–ed此参数的输出格式可用于ed的script文件。
-f或-forward-ed输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
-H或–speed-large-files比较大文件时,可加快速度。
-l<字符或字符串>或–ignore-matching-lines<字符或字符串>若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
-i或–ignore-case不检查大小写的不同。
-l或–paginate将结果交由pr程序来分页。
-n或–rcs将比较结果以RCS的格式来显示。
-N或–new-file在比较目录时,若文件A仅出现在某个目录中,预设会显示:
Only in目录文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
-p若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
-P或–unidirectional-new-file与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
-q或–brief仅显示有无差异,不显示详细的信息。
-r或–recursive比较子目录中的文件。
-s或–report-identical-files若没有发现任何差异,仍然显示信息。
-S<文件>或–starting-file<文件>在比较目录时,从指定的文件开始比较。
-t或–expand-tabs在输出时,将tab字符展开。
-T或–initial-tab在每行前面加上tab字符以便对齐。
-u,-U<列数>或–unified=<列数>以合并的方式来显示文件内容的不同。
-v或–version显示版本信息。
-w或–ignore-all-space忽略全部的空格字符。
-W<宽度>或–width<宽度>在使用-y参数时,指定栏宽。
-x<文件名或目录>或–exclude<文件名或目录>不比较选项中所指定的文件或目录。
-X<文件>或–exclude-from<文件>您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
-y或–side-by-side以并列的方式显示文件的异同之处。
–help显示帮助。
–left-column在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
–suppress-common-lines在使用-y参数时,仅显示不同之处。

demo

diff log2023.log log2022.log \\比较两个文件
diff log2023.log log2022.log -y -W 50  \\并排格式输出
=================
"|"表示前后2个文件内容有不同
"<"表示后面文件比前面文件少了1行内容
">"表示后面文件比前面文件多了1行内容

17> dump 备份文件系统

语法:
dump [选项] 目录|文件系统

选项含义
-0123456789备份的层级;-0 是备份的等级,从0-9,0以后都是更新备份的参数,一般常用的是0和9
-b指定区块的大小,单位为KB;
-B指定备份卷册的区块数目;
-c修改备份磁带预设的密度与容量;
-d设置磁带的密度。单位为BPI;
-f指定备份设备;
-h当备份层级等于或大于指定的层级时,将不备份用户标示为“nodump”的文件;
-n当备份工作需要管理员介入时,向所有“operator”群组中的使用者发出通知;
-s备份磁带的长度,单位为英尺;
-T指定备份的时间与日期;
-u备份完毕后,在/etc/dumpdates中记录备份的文件系统、层级、日期与时间等;
-w与-W类似,但仅显示需要备份的文件;
-W显示需要备份的文件及其最后一次备份的层级、时间与日期。

demo

\\ 将/home目录所有内容备份到/tmp/homeback.bak文件中,备份层级为0并在/etc/dumpdates中记录相关信息
dump -0u -f /tmp/homeback.bak /home
\\将/home目录所有内容备份到/tmp/homeback.bak文件中,备份层级为1(只备份上次使用层次0备份后发生过改变的数据)并在/etc/dumpdates中记录相关信息
dump -1u -f /tmp/homeback.bak /home

通过dump命令的备份层级,可实现完整+增量备份、完整+差异备份,在配合crontab可以实现无人值守备份

18> restore 写回

restore 命令用来还原由dump操作所备份下来的文件或整个文件系统(一个分区)
指令所进行的操作和dump指令相反,dump操作可用来备份文件,而restore操作则是写回这些已备份的文件;
语法:
restore(选项)

选项含义
-b<区块大小>设置区块大小,单位为Byte;
-c不检查倾倒操作的备份格式,仅准许读取使用旧格式的备份文件;
-C使用对比模式,将备份的文件与现行的文件相互对比;
-D<文件系统>允许用户指定文件系统的名称;
-f<备份文件>从指定的文件中读取备份数据,进行还原操作;
-h仅解除目录而不包括与该目录相关的所有文件;
-i使用互动模式,在进行还原操作时,restore指令将依序询问用户;
-m解开符合指定的inode编号的文件或目录而非用文件名称指定;
-r进行还原操作;恢复时候需要需要单独建立一个文件夹;
-R全面还原文件系统时,检查应从何处开始进行;
-s<文件编号>当备份数据超过一卷磁带时,用户可以指定备份文件的编号;
-t指定文件名称,若该文件已存在备份文件中,则列出它们的名称;
-v显示指令执行过程;
-x设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在在备份文件中,则将其还原到文件系统内;
-y不询问任何问题,一律以同意回答并继续执行指令

demo

\\restore 命令来恢复备份
dump -9 -u -f /dev/hda3 /home/frank/
restore rf /dev/hda3 /home/frank
\\restore 命令来查看备份文件里的文件列表
restore ft /dev/hda3

19> cp 制文件和目录

cp 命令,主要用来复制文件和目录,同时借助某些选项,还可以实现复制整个目录,以及比对两文件的新旧而予以升级等功能;
注意的是,源文件可以有多个,但这种情况下,目标文件必须是目录才可以
语法:
cp [选项] 源文件 目标文件

选项含义
-a相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;
-d如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;
-i询问,如果目标文件已经存在,则会询问是否覆盖;
-l把目标文件建立为源文件的硬链接文件,而不是复制源文件;
-s把目标文件建立为源文件的软链接文件,而不是复制源文件;
-p复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);
-r递归复制,用于复制目录;
-u若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用

demo

\\使用指令 cp 将当前目录 test/ 下的所有文件复制到新目录 newtest 下
cp –r test/ newtest     
\\保留源文件属性复制
cp /var/lib/mlocate/mlocate.db /tmp/ \\复制命令后,目标文件的时间会变成复制命令的执行时间,而不是源文件的时间
cp -p /var/lib/mlocate/mlocate.db /tmp/mlocate.db_2 \\"-p" 选项,这个选项会保留源文件的属性

20> mv 移动

mv(英文全拼:move file)命令用来为文件或目录改名、或将文件或目录移入其它位置

语法
mv [options] source dest
mv [options] source… directory

选项含义
-b当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-i如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-f如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-n不要覆盖任何已存在的文件或目录。
-u当源文件比目标文件新或者目标文件不存在时,才执行移动操作
命令格式运行结果
mv source_file(文件) dest_file(文件)将源文件名 source_file 改为目标文件名 dest_file
mv source_file(文件) dest_directory(目录)将文件 source_file 移动到目标目录 dest_directory 中
mv source_directory(目录) dest_directory(目录)目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory
mv source_directory(目录) dest_file(文件)出错

demo

\\将文件 aaa 改名为 bbb 
mv aaa bbb
\\将 info 目录放入 logs 目录中。注意,如果 logs 目录不存在,则该命令将 info 改名为 logs
mv info/ logs 
\\将 /usr/runoob 下的所有文件和目录移到当前目录下
 mv /usr/runoob/*  . 

21> rm 删除

1,rm 命令是remove 的缩写,Linux中 rm 命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变;
2,rm是一个危险的命令
语法
rm [选项] 目录名称

选项含义
d或–directory直接把欲删除的目录的硬连接数据删成0,删除该目录。
-f或–force强制删除文件或目录,忽略不存在的文件,不提示确认。
-i或–interactive删除既有文件或目录之前先询问用户。
-I在删除超过三个文件或者递归删除前要求确认。此选项比-i 提示内容更少,但同样可以阻止大多数错误发生。
-r或-R或–recursive递归删除,将指定目录下的所有文件及子目录一并删除。
-v或–verbose显示指令执行过程。
–help 在线帮助查看该命令功能和可带参数等

demo

\\删除多个文件并在删除前逐一询问确认
rm -i *.txt
\\将 test1子目录及子目录中所有文件都删除
 rm -r test1
 \\删除以 t 开头的文件(不能删除目录)
 rm -- t
 \\删除某一指定目录下除隐含文件外的所有文件和子目录(强制删除不提醒)
 rm -rf 目录/*

22> dd 读取、转换并输出数据

dd 命令用于读取、转换并输出数据;d 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出

参数含义
if=文件名输入文件名,默认为标准输入。即指定源文件。
of=文件名输出文件名,默认为标准输出。即指定目的文件。
ibs=bytes一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes同时设置读入/输出的块大小为bytes个字节。
cbs=bytes一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks从输入文件开头跳过blocks个块后再开始复制。
seek=blocks从输出文件开头跳过blocks个块后再开始复制。
count=blocks仅拷贝blocks个块,块大小等于ibs指定的字节数。
–help显示帮助信息
–version显示版本信息conv=<关键字>,关键字可以有以下11种:
conv=<关键字>含义
conversion用指定的参数转换文件。
ascii转换ebcdic为ascii
ebcdic转换ascii为ebcdic
ibm转换ascii为alternate ebcdic
block把每一行转换为长度为cbs,不足部分用空格填充
unblock使每一行的长度都为cbs,不足部分用空格填充
lcase把大写字符转换为小写字符
ucase把小写字符转换为大写字符
swap交换输入的每对字节
noerror出错时不停止
notrunc不截短输出文件
sync将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐

demo

\\Linux 下制作启动盘,可使用如下命令
dd if=boot.img of=/dev/fd0 bs=1440k 
\\将testfile文件中的所有英文字母转换为大写,然后转成为testfile_1文件,在命令提示符中使用如下命令
dd if=testfile_2 of=testfile_1 conv=ucase
\\由标准输入设备读入字符串,并将字符串转换成大写后,再输出到标准输出设备,使用的命令
dd conv=ucase 

23> file 辨识文件类型

file命令用于辨识文件类型。

通过file指令,我们得以辨识该文件的类型;
语法
file [-bcLvz][-f <名称文件>][-m <魔法数字文件>…][文件或目录…]

参数含义
-b列出辨识结果时,不显示文件名称。
-c详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件>指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L直接显示符号连接所指向的文件的类别。
-m<魔法数字文件>指定魔法数字文件。
-v显示版本信息。
-z尝试去解读压缩文件的内容。
[文件或目录…]要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件

demo

\\显示文件类型
file install.log
file -b install.log  \\不显示文件名称
file -i install.log \\显示MIME类别

24> lsof 列出已经打开的所有文件

lsof 是 linux 下的一个非常实用的系统级的监控、诊断工具.使用 lsof,你可以获取任何被打开文件的各种信息,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能;

选项含义
-a指示其它选项之间为与的关系
-c <进程名>输出指定进程所打开的文件
-d <文件描述符>列出占用该文件号的进程
+d <目录>输出目录及目录下被打开的文件和目录(不递归)
+D <目录>递归输出及目录下被打开的文件和目录
-i <条件>输出符合条件与网络相关的文件
-n不解析主机名
-p <进程号>输出指定 PID 的进程所打开的文件
-P不解析端口号
-t只输出 PID
-u输出指定用户打开的文件
-U输出打开的 UNIX domain socket 文件
-h显示帮助信息
-v显示版本信息

1. 基本输出

如果不带任何选项执行 lsof 命令,会输出系统中所有 active 进程打开的所有文件;

参数含义
COMMAND程序的名称
PID进程标识符
USER进程所有者
FD文件描述符,应用程序通过文件描述符识别该文件;常见内容有 cwd、rtd、txt、mem 和一些数字等等,中 cwd 表示当前的工作目录;rtd 表示根目录;txt 表示程序的可执行文件;mem 表示内存映射文件
TYPE文件类型,如 DIR、REG 等
DEVICE以逗号分隔设备编号
SIZE文件的大小(bytes)
NODE索引节点(文件在磁盘上的标识)
NAME打开文件的确切名称

2. demo

\\查看哪些进程打开了某个目录及目录下的文件
sudo lsof +d /var/log \\+d 选项不执行递归查询,只查找那些打开了指定目录以及指定目录下文件和目录的进程
sudo lsof +D /var/log \\+D 选项则会对指定的目录进行递归
sudo lsof -p 1152 \\查看某个进程打开的所有文件
 sudo lsof -a -p $$ -d0,1,2 \\组合多个选项;-p 选项指定了当前进程的 PID,而 -d 选项则用来指定进程打开的文件描述符(可以通过逗号分隔多个文件描述符)。添加 -a 选项后,结果输出为当前进程打开的文件描述符为 0、1、2 的文件
sudo lsof -c cr  \\查看指定名称的程序打开的文件

25> vmstat 展现服务器的状态值

1. 介绍

vmstat主要是用来检测虚拟内存的,可以展现给定时间间隔的服务器的状态值,包括CPU使用率,内存使用率,虚拟内存交换情况,IO读写情况等

语法:
vmstat [选项]
vmstat [刷新延时 刷新次数]

选项参数
-a(active)显示活跃和非活跃内存
-f(forks)显示从系统启动至今的fork数量
-m(slabs)显示slabinfo
-n(one-header)只在开始时显示一次各字段名称
-s(stats)显示内存相关统计信息及多种系统活动数量
-d(disk)显示磁盘相关统计信息
-D(disk-sum)磁盘总和汇总磁盘统计信息
-p(partition )查看硬盘分区的读写情况
-S(unit )令输出的数据显示单位,例如用 K/M 取代 bytes 的容量
-w(wide)宽输出
-t(timestamp)显示时间戳
-h(help)显示此帮助并退出
-V(version)输出版本信息并退出

2. demo

demo

vmstat 2 3 \\每隔两秒输出三次数据
=============================
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0   7680 125368     20 249124    0    0     9     2   43  154  0  0 100  0  0
 0  0   7680 125368     20 249124    0    0     0     1   45  157  0  1 100  0  0


字段说明
procs进程信息字段;r:等待 CPU 运行的进程数,数量越大,系统越繁忙(负载瓶颈:3,5,10);b:等待资源的进程数,数量越大,系统越繁忙
memory内存信息字段;swpd:虚拟内存的使用情况,单位为 KB;free:空闲的内存容量,单位为 KB;buff:缓冲的内存容量,单位为 KB;cache:缓存的内存容量,单位为 KB;缓存(cache)是用来加速数据从硬盘中读取的,而缓冲(buffer)是用来加速数据写入硬盘的
swap交换分区信息字段;si:从磁盘中交换到内存中数据的数量,单位为 KB;so:从内存中交换到磁盘中数据的数量,单位为 KB这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差
io磁盘读/写信息字段;bi:从磁盘中读入的数据的总量,单位为 KB;bo:写到磁盘的数据的总量,单位为 KB,这两个数越大,代表系统的 I/O 越繁忙。
system系统信息字段;in:每秒被中断的进程次数;cs:每秒上下文的切换次数,这两个数越大,代表系统与接口设备的通信越繁忙。
cpuCPU信息字段;us:CPU应用进程使用率;sy:系统核心CPU使用率;id:CPU空闲率;wa:等待 I/O 的占用率;st:当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比;如果us+sy 大于 80%说明可能存在CPU不足,如果wa超过30%,说明IO等待比较严重

26> dmesg 显示开机信息

dmesg(英文全称:display message)命令用于显示开机信息;
kernel 会将开机信息存储在 ring buffer 中。您若是开机时来不及查看信息,可利用 dmesg 来查看。开机信息亦保存在 /var/log 目录中,名称为 dmesg 的文件里;

语法
dmesg [-cn][-s <缓冲区大小>]

参数说明
-c显示信息后,清除 ring buffer 中的内容。
-s<缓冲区大小>预设置为 8196,刚好等于 ring buffer 的大小。
-n设置记录信息的层级

27> path 环境变量

1. 介绍

Linxu有很多环境变量,都是以大写的形式出现。

用env和export显示当前的所有的环境变量;

PATH环境变量格式:

PATH=${PATH}:/home/bin”就是支PATH这个变量重新赋值,赋值了两个值,第一个值是原来的$PATH,第二个是"/home/bin",两个变量之间使用:隔间开。

PATH=“$PATH”:路径1:路径2:路径3:.....:路径n

2. PATH demo

PATH  \\查看PATH变量
export PATH=$PATH:新添加的路径   \\添加PATH变量 -用此方法添加的PATH,在关闭或者重启LINUX后会失效

vi /etc/profile  \\修改profile文件
export PATH="$PATH:/opt/au1200_rm/build_tools/bin" \\ 添加新的路径到PATH环境变量

28> read 从标准输入读取数值

1. 介绍

Linux read命令用于从标准输入读取数值。

read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据;
语法
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name …]

参数说明:
-a后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
-d后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。
-p后面跟提示信息,即在输入前打印提示信息。
-e在输入的时候可以使用命令补全功能。
-n后跟一个数字,定义输入文本的长度,很实用。
-r屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。
-s安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。
-t后面跟秒数,定义输入字符的等待时间。
-u后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的

2. demo

linux系统中read命令用于从标准输入中读取数据,进而给变量赋值


echo $var1 ## 首先查看未赋值前变量,发现是空值
read var1  --->001   ## read命令直接跟想要赋值的变量名称,就可以给变量赋值了(直接通过键盘输入)
echo $var1 ---> 001##查看通过键盘输入001后变量的值,发现变量var1已经是001

直接使用read,不加变量名称,变量赋值给REPLY

read  ---> 002 ##直接使用read命令,不加变量名称
echo $REPLY --->  002 ## linux默认将变量命名为REPLY

通过-p参数加入提示语

read -p "please input an number:" var1 ## -p参数在输入变量值前起到提示的作用
please input an number:100
 echo $var1
 100
 read -p "请输入变量值:" var2 ##同上
 请输入变量值:xxxyyyzzz
echo $var2
xxxyyyzzz

通过-t参数限制输入变量值的时间

time read -t 3 var1  ## 通过-t设置输入时间上限3秒,如果3秒内未输入,变量为空值
real    0m3.001s
user    0m0.000s
sys     0m0.000s
`echo $var1
time read -t 3 var1  ## 3秒内输入变量,可给变量赋值
11

real    0m1.480s
user    0m0.000s
sys     0m0.000s

echo $var1
11
``
通过-s 选项隐藏输入的变量值,比如在屏幕输入密码

echo $PASSWD
ead -s -p "please input your passwd:" PASSWD  ## 通过-s参数,可以在给变量PASSWD赋值的时候不在屏幕上显示
please input your passwd:123456
echo $PASSWD
123456

通过-n参数实现限定输入变量的长度

read -n 1 var1 ##限定变量长度为1
u
echo $var1
u
read -n 5 var1 ## 限定变量长度为5,可以输入少于和等于5的变量值,但不能大于5
123
echo $var1
123
read -n 5 var1
12345
echo $var1
12345

使用-r参数限制为原始字符串

read var1
abc\defg\hi
echo $var1
abcdefghi
read -r var1  ## 加-r参数实现不对\进行转义
abc\defg\hi
echo $var1
abc\defg\hi

从文件中读取变量值

seq -f test%g 5 > a.txt ##测试文件
cat a.txt
test1
test2
test3
test4
test5
ls --->a.txt
cat a.txt | while read i;do mkdir $i;done  ##读取a.txt的每一行作为变量,以变量名创建目录
ls
a.txt  test1  test2  test3  test4  test5



29> rsyslog 系统日志的处理转发

1. 介绍

Rsyslog 是一个 syslogd 的多线程增强版,依然基于Syslog协议(linux6之前默认使用syslog程序,centos6用rsyslog所取代)完成系统日志的处理转发,官方形容它是一个极速(如火箭般快速)的日志处理系统。它提供高性能、极好的安全功能和模块化设计。虽然它基于常规的 syslogd,但 rsyslog 已经演变成了一个强大的工具
linux系统中分类:

日志类型含义
klogdkernel,记录内核相关的日志
syslogdservice,记录应用程序的日志

rsyslog:是CentOS 6以后的系统使用的日志系统,与之前的syslog日志系统相比,具有以下优点:

序列rsyslog优点
1支持多线程
2支持TCP、SSL、TLS、RELP等协议
3强大的过滤器,可实现过滤日志信息中的任意部分
4支持自定义输出格式,适用于企业级别日志记录需求
5模块化

2. facility:设施、信道

设施,用来定义日志消息的来源,方便对日志进行分类

日志类型日志内容
kern内核信息
user用户程序产生的相关信息
mail邮件系统信息
daemon守护进程产生的信息
authpam认证系统信息
syslog日志系统自身信息
authprivssh、ftp等登录信息
cron系统执行定时任务产生的信息
lpr打印相关信息
mark服务内部的信息,时间标识
uucpUnix-to-Unix Copy 两个unix之间的相关通信
local0-local7保留,本地使用

3. 日志级别

日志等级说明(级别从低到高,记录信息越来越少)
debug包含详细的开发情报的信息,通常只在调试一个程序时使用。
info通用性信息,一般用来提供有用信息,
notice正常信息,但是较为重要,可能需要处理
warning警告信息
error/err错误信息,某个功能或者模块不能正常工作的信息
crit严重级别,系统或整个软件不能正常工作的信息,例如硬盘错误
alert需要立刻修改的信息,如系统数据库被破坏,ISP连接丢失。
emerg紧急情况,内核奔溃等重要信息
none什么也不记录

4.rsyslog配置

rsyslog.conf 配置文件

三部分组成含义
MODULES模块,配置加载的模块,如:ModLoad imudp.so配置加载UDP传输模块
GLOBAL DIRECTIVES全局配置,配置ryslog守护进程的全局属性,比如主信息队列大小(MainMessageQueueSize)
RULES规则(选择器+动作),每个规则行由两部分组成,selector部分和action部分,这两部分由一个或多个空格或tab分隔,selector部分指定源和日志等级,action部分指定对应的操作

常用modules:imudp,传统方式的UDP传输,有损耗;imtcp,基于TCP明文的传输,只在特定情况下丢失信息,并被广泛使用;imrelp,RELP传输,不会丢失信息,但只在rsyslogd 3.15.0及以上版本中可用
rules-规则选择器(selectors):selector也由两部分组成,设施和优先级,由点号.分隔
第一部分为消息源或称为日志设施,第二部分为日志级别。多个选择器用;分隔,如:*.info;mail.none
动作(action):action是规则描述的一部分,位于选择器的后面,规则用于处理消息
消息内容可以被写入到一个日志文件中,也可以写入到数据表表或转发到其他主机, 还可以发送给主机用户 (可以指定用户名,用 * 表示所有);
模板(templates):模板允许你指定日志信息格式
也可用于生成动态文件名,或在规则中使用

四:Vim 与 Shell 命令

Vim 与 Shell 命令
https://blog.csdn/weixin_42914706/article/details/129651569

更多推荐

liunx-基本指令集合--2

本文发布于:2023-04-13 15:16:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/5682f279d3cca59589b44f9a62fd0eed.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:指令   liunx

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 72937文章数
  • 14阅读数
  • 0评论数