(待修改)
一、基础命令
1、date 补充
系统时间(System Time):由内核维护的时间
硬件时间(Hardware Time):由BIOS提供的时间
查询修改系统时间:date
查询修改硬件时间:hwclock
将系统时间写入硬件时间:hwclock -w
UTC时间:UTC + 时区差=本地时间
硬件时间:
[root@localhost ~]# clock
[root@localhost ~]# hwclock #显示硬件时间
[root@localhost ~]# clock -s #硬件时间同步为系统时间
[root@localhost ~]# clock -w #系统时间同步为硬件时间
时间同步:
[root@localhost ~]# yum install ntpdate
[root@localhost ~]# ntpdate ntp1.aliyun.com
[root@localhost ~]# clock -w
2、查看历史命令(history):
history -c 删除所有条目从而清空历史列表。
history -d 行数 从指定位置删除历史列表。
history -r 读取历史文件并将内容追加到历史列表中
history -a 将当前会话的历史行追加到历史文件中
history -n 从历史文件中读取所有未被读的行
history -w 将当前历史写入到历史文件中,并追加到历史列表中
history -p `` 对每一个 ARG 参数展开历史并显示结果,而不存储到历史列表中
history -s `` 以单条记录追加 ARG 到历史列表中
HISTFILE="/.xuankui" :历史命令的路径和文件名
3.、bash的别名机制
alias vimif(别名)="vim /etc/sysconfig/network-scripts/ifcfg-ens32" #定义别名
\vimif(还原别名的真实含义)
ls --color=auto(=ls)
[root@client ~]# unalias vimif(取消别名)
4、HISTFILESIZE(限制history文件大小)
du .bash_history(文件名):查看文件大小
du -h .bash_history(文件名):查看文件具体大小
HISTTIMEFORMAT=`date` :打印时间戳
HISTFILESIZE=1024:限制历史命令文件大小
HISTSIZE=1000:历史条目
5、取命令
.+ESC 或!$ :取出上一条参数到命令行(但!$会执行)
[root@client ~]# echo $_ :打印出上一条命令的参数
6、
echo $HISTCONTROL
HISTCONTROL=ignorespace:忽略以空白字符开头的命令
HISTCONTROL=ignoredups:忽略重复的命令
HISTCONTROL=ignoreboth:以上两者同时生效
二、bash特性:变量
1、分类:
1)、本地变量:作用域, shell进程中的某代码片段。(生效范围为当前shell进程中的某段代码片,通常指函数)
局部变量:又称标准变量或普通变量 ,生效范围为当前shell(bash)进程,对当前shell之外的其他进程包括子进程无效
环境(全局)变量:生效范围为当前shell(bash)进程及其子进程。
[root@client ~]# export name=wangzhe(自定义) 全局变量定义
2.支持特殊符号
(1)、管道:把一个程序的输出直接连接到另一个程序的输出。
(2)、进程间通信的方式:
a、管道(无名管道、高级管道、有名管道): 管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
b、消息队列: 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
c、信号量: 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
d、信号:信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
e、共享内存:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
f、套接字: 套解字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。
3、文件描述符:内核利用文件描述符来访问文件。文件描述符是非负整数,打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。
三、
1、[root@client ~]# vim /etc/security/limits.conf
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
第一列表示用户和用户组(@开头)
第二列表示软限制还是硬限制。
hard和soft的区别: soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错,一般情况下都是设为同一个值。
第三列表示限制的资源类型。
core是内核文件,nfile是文件描述符,nproc是进程,一般情况下只限制文件描述符数和进程数就够了
第四列表示限制的最大值。
2、查看系统当前打开的文件描述符数量
[root@client ~]#
1152 0 95096
第一个数表示当前系统分配后已使用的文件描述符数,
第二个数表示分配后未使用的(内核2.6版本中这个值总是为0,这并不是一个错误,它意味着已经分配的文件描述符总会被使用),
第三个数等于最大值file-max。
3、查看某个进程打开的文件描述符数量
下载:yum install lsof -y
[root@client ~]# lsof -p 7919 |wc -l
标准输入:0
标准输出: 1
错误输出: 2
4、命令拼接
【;】: 不存逻辑关系判断,即使前一个命令执行失败,后面的命令依然执行
eg:[root@localhost ~]# ls -a;w
【&&】 存在逻辑判断,前一个命令执行成功,后一个命令才会执行
【||】 存在逻辑判断,前一个命令执行不成功,后一个命令也会执行
【``】: 解析shell命令
[root@client ~]# echo `date`
【''】: 强引用,所见即所得
【""】: 弱引用,会解析变量
echo 出入时对于转义不受强引弱引的限制,与echo的“-e”参数有关
【{}】参数替换
[root@client ~]# cp ip.txt ip.txt.bak
[root@client ~]# cp ip.txt{,.baitao}
[root@client ~]# cp ip{.txt,.hehe}
【*】匹配任意长度的任意字符
[root@client bak]# ll *.txt #匹配任意多个字符
[root@client bak]# ll ?.txt #匹配单个字符
[root@client bak]# ll [a-z,A-Z,0-9_&%$.?].txt
[root@client bak]# ll [^_].txt
5、支持热键
(1)CTRL +l #清屏
(2)CTRL +c #终止当前进程
(3)CTRL +A #光标调到命令开头
(4)CTRL +E #光标调到命令结尾
(5)CTRL +U #删除光标所在位置之前的内容
(6)CTRL +K #删除光标所在位置之后的内容
6、passwd
1)、root 可以修改普通用户的密码,普通用户无法修改其他用户的密码,普通用修改自己密码,秘钥需要复合复杂性规则要求。
2)、passwd honey(在根用户下指定用户名并修改密码)
vim /etc/shadow
*honey:用户名
*$6$jtEKmdb.$xDyDmifI5DlClJ43fk453O5ZfVhg.yLS0VZmRt...:加密后的密码
*18467:最后一次修改密码的日期距1970,1,1,时间戳 (天)
*0: 必须要保留的最小天数,0意味着任何时间都可修改密码,从当前开始
*99999: 在此时间之后,必须修改密码,从当前开始(天)
*7:密码过期之前多少天告警
* :密码过期之后几天,任然可登陆,但是需要提示用户修改密码
* :禁用;1970,1,1
* :预留。
3)、相关命令
passwd -S 用户名 #报告已命名帐号的密码状态(只有根用户才能进行此操作)
passwd -d 用户名 #删除已命名帐号的密码(只有根用户才能进行此操作)
passwd -e 用户名 # 终止指名帐户的密码(仅限 root 用户)
passwd -l 用户名 #锁定指名帐户的密码(仅限 root 用户)
passwd -u 用户名 #解锁指名账户的密码(仅限 root 用户)
passwd -k 用户名 #保持身份验证令牌不过期
passwd -i 10 用户名 #当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
passwd -w 10 用户名 # 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
passwd -n 100 用户名 #密码的最短有效时限(只有根用户才能进行此操作)
passwd -x 100 用户名 #密码的最长有效时限(只有根用户才能进行此操作)
passwd -f 用户名 #强制执行操作
chage -M 400 用户名 #修改过期时间
echo "123456" | passwd --stdin 用户名 #从输入修改密码
7、su
1)、su和su -的区别:
su只是切换了root身份,但Shell环境仍然是普通用户的Shell;而su -连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误,报command not found的错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su - 后的环境变量已经变了。
8、yum clean all (清除缓存)
yum makecache(生成缓存)
9、who
1)、
第一列:登录用户
第二列:终端
第三列:登录时间
第四列:客户端的IP
2)、
who im a(who -m) #打印当前系统登录的用户信息(用户名 终端设备 登录时间 客户端IP)
who -q#显示用户数
who -r(运行级别 3 2020-07-13 16:34)
who -b( 系统引导 2020-07-13 16:34)
who -a(who -all)
10、int
0 : 关机
1 : 单用户
2 : 不带网络文件系统的多用户
3 : 多用户
4 : 预留
5 : 图像化 x-window
6 : 重启
11、w
[root@server ~]# w (系统登陆时间,状态)
[root@server ~]# w -h
12、unmae
uname -v #内核的发行日期
uname -n # 查看用户名
uname -r # 查看内核发行版
uname -m #主机架构
uname -p #CPU架构
uname -i #硬件平台架构
uname -o #操作系统名
[root@nidaye proc]# cat /proc/version
13、uptime
[root@nidaye proc]# uptime 系统时间 系统状态 系统运行时长 目前系统上运行的用户个数 cpu平均负载
补充: CPU负载:在特定时间间隔内运行队列中的平均进程数.
CPU使用率:CPU实际真正处理任务的时间和总时间的比值.
14、last (当前与过去登入系统的用户相关信息)
last -n 4
last -f /var/log/lastlog
last -a
lastlog #系统用户的登录历史
users#显示用户
1)、/var/log/lastlog
该日志文件记录最近成功登录的事件和最后一次不成功的登录事件,由login生成。在每次用户登录时被查询,该文件是二进制文件,需要使用 lastlog命令查看,根据UID排序显示登录名、端口号和上次登录时间。如果某用户从来没有登录过,就显示为"**Never logged in**"。该命令只能以root权限执行。
2)、/var/log/wtmp
该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常 运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文 件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端 tty或时间显示相应的记录。
3)、/var/run/utmp
该日志文件记录有关当前登录的每个用户的信息。因此这个文件会随着用户登录和注销系 统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如 who、w、users、finger等就需要访问这个文件。该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时 更新 utmp记录,因此该日志文件的记录不是百分之百值得信赖的。
4)、以上提及的3个文件是日志子系统的关键文件,都记录了用户登录的情况。这些文件的所有记录都包含了时间戳。这些文件是按二进制保存的,故 不能用less、cat之类的命令直接查看这些文件,而是需要使用相关命令通过这些文件而查看。下一步,login程序打开文件wtmp附加用户的utmp记录。当用户登录退出时,具有更新时间戳的同一utmp记录附加到文件中。
15、dmesg
[root@nidaye ~]# more /var/log/dmesg(开机内容)
16、 free(查看内存)
free -s 5
cat /proc/meminfo
free -h