目录
- Linux 常用命令整理(Centos7) (附加正则、时区、git等)
- 一、系统查询常用命令:
- 1、文件中空格制表符替换sed
- 2、查看宿主机的用户名密码
- 3、last 、w、lastb 查看宿主机最近的登录记录
- 4、netstat 查看系统的网络情况
- 5、getfacl 其功能是用于显示文件或目录的ACL策略
- 6、swap使用统计
- 7、env 查看系统环境变量
- 8、Linux系统信息
- 9、查看用户打开到最大进程数
- 10、tree
- 11、htop
- 12、grep & uniq & sort & cut
- 13、awk筛选
- 14、ps查看进程
- 15、screen
- 16、配置LDAP客户端通过SSSD链接LDAP服务器(待完善……)
- 17、find命令
- 18、cache手动释放缓存
- 19、yum
- 20、vim
- 21、Centos7 查看磁盘i/o, 定位占用i/o读写高的进程
- 22、替换文件中的字符串sed
- 23、时间date
- 24、ethtool 命令(查询或控制网络驱动程序和硬件设置)
- 25、软连接硬链接
- 26、ls
- 27、系统常用的日志(日志是用来记录重大事件的工具)
- 二、常用快捷键
- 三、附加
- (END)
Linux 常用命令整理(Centos7) (附加正则、时区、git等)
一、系统查询常用命令:
Command | Description |
---|---|
pstree | # 以树状图显示程序 |
cal -3 | # 显示前一个月,当前月,下一个月的日历 |
cal 10 1992 | # 显示指定月 |
ifconfig | # 查看所有网络接口的属性 |
cat /sys/class/net/em1/address | # CentOS7如何查看MAC地址,这里em1对应自己的网卡名 |
iptables -L | # 查看防火墙设置 |
route -n | # 查看路由表 |
netstat -s | #查看网络统计信息 |
netstat -antp | # 查看所有已经建立的连接 |
netstat -lntp | # 查看所有监听端口 |
du -ch directory | # 查看目录及其包含的文件的大小 |
last | # 查看用户登录日志 |
w | # 查看活动用户 |
id | # 查看指定用户信息 |
cut -d: -f1 /etc/passwd | # 查看系统所有用户 |
cut -d: -f1 /etc/group | # 查看系统所有组 |
chkconfig –-list | # 列出所有系统服务 |
uptime | # 查看系统运行时间、用户数、负载 |
rpm -qa | # 查看所有安装的软件包 |
lsmod | # 列出加载的内核模块 |
lspci -tv | # 列出所有PCI设备 |
lsusb -tv | # 列出所有USB设备的linux系统信息命令 |
grep -v www test_data.txt | # grep -v反向搜索:不显示目标字符串 (想要过滤掉www的行) |
rm -f !(a|b|c) | # 除了这些文件,都删除 |
ll test_folder/ -I "test*" | # 列出所有目录或是文件除了以test开头的 |
ll test_folder/ -I "test*" -I "hello.txt" | # 多个-I一起用(列出所有目录或是文件除了以test开头的和”hello.txt“) |
dmidecode -t system | # 查看系统信息 |
echo “ops:admin” | base64 | # 转换字符串为base64格式 |
cat /proc/cpuinfo | # 查看CPU相关参数的linux系统命令 |
cat /proc/partitions | # 查看linux硬盘和分区信息的系统信息命令 |
cat /proc/meminfo | # 查看linux系统内存信息的linux系统命令 |
cat /proc/meminfo | grep MemTotal | # 内存总数 |
cat /proc/version | # 内核版本 |
cat /proc/ioports | # 查看设备io端口 |
cat /proc/interrupts | # 查看中断 |
cat /proc/pci | # 查看pci设备的信息 |
cat /proc/swaps | # 查看所有swap分区的信息 |
uname -a | # 操作系统内核信息: |
lsblk | # 查看磁盘信息 |
fdisk -l | # 查看磁盘分区信息 |
cat /proc/loadavg | # 查看系统负载磁盘和分区 |
swapon -s | # 查看所有交换分区 |
hdparm -i /dev/hda | # 查看磁盘参数(仅适用于IDE设备) |
lscpu | # cpu信息(Processor )其中socket代表物理cpu个数, Core(s) per socket就是每个cpu多少核,Thread(s) per core就是每个核几个超线程,CPU MHz内核频率 |
dmesg -T # -T 显示系统时间 | # dmesg命令显示linux内核的环形缓冲区信息. # dmesg命令被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息保存在/var/log/dmesg文件里。 |
dmesg | grep IDE | # 查看启动时IDE设备检测状况网络 |
ps -T -p <pid> | # Linux查看某个进程的线程 |
ethtool eth0 | # 查看CentOS的网络带宽出口 |
service network restart | # 重启网络重启命令 |
iptables -L | # 查看防火墙设置 |
&:除了最后一个cmd,前面的cmd均已后台方式静默执行,执行结果显示在终端上,个别的cmd错误不影响整个命令的执行,全部的cmd同时执行
&&:从左到右顺序执行cmd,个别cmd错误不产生影响
|:各个cmd同时在前台被执行,但是除最后的cmd之外,其余的执行结果不会被显示在终端上
||:从左到右顺序执行cmd,只有左侧的cmd执行出错,右边的cmd才会被执行,同时一旦有cmd被成功执行,整个命令就会结束,返回终端
1、文件中空格制表符替换sed
# 查看分割符
sed -n l test.txt
# 将多个空格转换为一个空格
sed 's/ \+/ /g' test.txt
#去除空格
sed 's/ \+//g' test.txt
# 把去除空格后的格式保存到新文件。
cat phone_data.txt |sed 's/ //g' >>phone_data1.txt
# 把多个空格和\t替换成一个空格
sed 's/[\t ]\+/ /g' phone_data1.txt 或 sed 's/\s\+/ /g' phone_data.txt
# 把多个\t替换成一个空格
sed 's/\t\+/ /g' phone_data1.txt
2、查看宿主机的用户名密码
cat /etc/password
cat /etc/group
# 查看当前用户的权限,可以用此命令看看是否有root权限
id
3、last 、w、lastb 查看宿主机最近的登录记录
# 查看最近的登录记录
last
# 列出失败尝试的登录信息
lastb
# 查看登录的用户,who和w记录当前登录用户的信息
[root@-server ~]# w
20:44:49 up 335 days, 6:38, 2 users, load average: 0.07, 0.05, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
testuser pts/0 60.20.143.175 20:39 2:09 0.15s 0.08s -zsh
root pts/1 60.20.143.175 20:26 1.00s 0.02s 0.00s w
# 踢出用户 方法一
[root@-server ~]# fuser -k /dev/pts/1
# 踢出用户 方法二
[root@-server ~]# pkill -kill -t pts/1 # or use (pkill -9 -t pts/1)
# 给用户发信息
[root@-server ~]# echo "你好我是管理员" > /dev/pts/1
# 发信息在关闭
[root@-server ~]# echo "你被管理员踢出了" > /dev/pts/1 && fuser -k /dev/pts/1
# 查看连接宿主机的IP信息, 三方工具 whois IP地址
[root@-server ~]# yum install -y whois
[root@-server ~]# whois 220.181.38.150
Linux用户登录信息放在三个文件中:
1 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;
2 /var/log/wtmp:记录当前正在登录和历史登录系统的用户信息,默认由last命令查看;
3 /var/log/btmp:记录失败的登录尝试信息,默认由lastb命令查看。
4、netstat 查看系统的网络情况
# netstat 指令可让你得知整个 Linux 系统的网络情况。eg:连接了哪些ip
netstat -ntu
-a或--all 显示所有连线中的Socket。
-A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
-c或--continuous 持续列出网络状态。
-C或--cache 显示路由器配置的快取信息。
-e或--extend 显示网络其他相关信息。
-F或--fib 显示路由缓存。
-g或--groups 显示多重广播功能群组组员名单。
-h或--help 在线帮助。
-i或--interfaces 显示网络界面信息表单。
-l或--listening 显示监控中的服务器的Socket。
-M或--masquerade 显示伪装的网络连线。
-n或--numeric 直接使用IP地址,而不通过域名服务器。
-N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
-o或--timers 显示计时器。
-p或--programs 显示正在使用Socket的程序识别码和程序名称。
-r或--route 显示Routing Table。
-s或--statistics 显示网络工作信息统计表。
-t或--tcp 显示TCP传输协议的连线状况。
-u或--udp 显示UDP传输协议的连线状况。
-v或--verbose 显示指令执行过程。
-V或--version 显示版本信息。
-w或--raw 显示RAW传输协议的连线状况。
-x或--unix 此参数的效果和指定"-A unix"参数相同。
--ip或--inet 此参数的效果和指定"-A inet"参数相同。
5、getfacl 其功能是用于显示文件或目录的ACL策略
# getfacl [参数] 文件或目录
常用参数:
-a 显示文件的ACL
-d 显示默认的ACL
-c 不显示注释标题
-e 显示所有的有效权限
-E 显示没有的有效权限
-s 跳过文件,只具有基本条目
-R 递归到子目录
-t 使用表格输出格式
-n 显示用户的UID和组群的GID
-b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。
-k,--remove-default:删除缺省的acl规则。如果没有缺省规则,将不提示。
-n,--no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。
--mask:重新计算有效权限,即使ACL mask被明确指定。
-d,--default:设定默认的acl规则。
--restore=file:从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行。
--test:测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。
-R,--recursive:递归的对所有文件及目录进行操作。
-L,--logical:跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。
-P,--physical:跳过所有符号链接,包括符号链接文件。
--version:输出setfacl的版本号并退出。
--help:输出帮助信息。
--:标识命令行参数结束,其后的所有参数都将被认为是文件名
-:如果文件名是-,则setfacl将从标准输入读取文件名。
6、swap使用统计
sar -S 1 # 每秒统计一次swap使用情况
7、env 查看系统环境变量
env # 查看系统环境变量
/etc/profile,/etc/bashrc 是系统全局环境变量设定
~/.profile,~/.bashrc 用户家目录下的私有环境变量设定
当登入系统时候获得一个shell进程时,其读取环境设定档有三步 :
1)、首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如 /etc/profile.d和/etc/inputrc 。
2)、然后根据不同使用者帐号,去其根目录读取~/.bash_profile,如果这读取不了就读取~/.bash_login,这个也读取不了才会读取 ~/.profile,这三个文档设定基本上是一样的,读取有优先关系 。其中,Unbutu默认没有~/.bash_profile文件,可新建。
3)、最后在根据用户帐号读取~/.bashrc 。
8、Linux系统信息
8.1、查看cpu详细信息
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看系统CPU详细信息
rtm16:/proc # cat /proc/cpuinfo
processor : 0 # CPU处理器序号,从0开始,可通过该序号查看CPU个数
vendor_id : GenuineIntel # CPU制造商,因特尔正式版
cpu family : 6 # CPU产品系列代号,即第6代CPU
model : 62 # CPU属于其系列的哪一代的代号
model name : Intel(R) Xeon(R) CPU E5-4620 v2 @ 2.60GHz # 处理器型号,主频
stepping : 4 # CPU属于制作更新版本
microcode : 0x428
cpu MHz : 2600.000 # CPU主频率
cache size : 20480 KB # CPU二级缓存大小
physical id : 0 # 单个CPU 的标号
siblings : 2 # 单个CPU逻辑合数
core id : 0 # 当前物理核在其所处的CPU中的编号
cpu cores : 2 # 该逻辑核所处的CPU物理核数
apicid : 0 #
initial apicid : 0
fpu : yes # 是否具有浮点运算单元
fpu_exception : yes # 是否支持浮点计算异常
cpuid level : 13 # 执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指
# 令会返回不同的内容
wp : yes # 表明当前CPU是否在内核态支持对用户空间的写保护
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon
pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16
sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat
epb pln pts dtherm # 当前CPU支持的功能
bugs :
bogomips : 5200.00 # 在系统内核启动时粗略测算的CPU速度
clflush size : 64 # 每次刷新缓存的大小单位
cache_alignment : 64 # 缓存地址对齐单位
address sizes : 40 bits physical, 48 bits virtual # 可访问地址空间位数
power management:
# 只需关注 processor 的序号即可。查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
8.2、查看内存Mem信息
1、查看系统运行内存大小
rtm16:~ # cat /proc/meminfo | grep Mem
MemTotal: 131834316 kB # 系统内核可支配的内存
MemFree: 127166996 kB # 系统尚未使用的内存
MemAvailable: 129782116 kB # 系统可用内存
rtm16:~ #
2、查看系统内存详细信息 cat /proc/meminfo
rtm16:~ # cat /proc/meminfo
MemTotal: 131834316 kB # 系统内核可支配的内存
MemFree: 127164532 kB # 系统尚未使用的内存
MemAvailable: 129779648 kB # 系统可用内存,包括cache、buffer等
Buffers: 187560 kB # 一般是用在写入磁盘的,缓冲区大小
Cached: 3807988 kB # 缓存区,存放CPU最近使用过的部分数据
SwapCached: 0 kB
Active: 3574188 kB
Inactive: 690120 kB
Active(anon): 599176 kB
Inactive(anon): 101516 kB
Active(file): 2975012 kB
Inactive(file): 588604 kB
Unevictable: 80 kB
Mlocked: 80 kB
SwapTotal: 16779260 kB
SwapFree: 16779260 kB
Dirty: 36 kB
Writeback: 0 kB
AnonPages: 268812 kB
Mapped: 267256 kB
Shmem: 431944 kB
Slab: 238224 kB
SReclaimable: 202476 kB
SUnreclaim: 35748 kB
KernelStack: 4624 kB
PageTables: 9888 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 82696416 kB
Committed_AS: 1476600 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 180224 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 118656 kB
DirectMap2M: 134098944 kB
rtm16:~ #
只需要关注 MemTotal、MemFree前几个参数即可
8.3、查看系统文件挂载和文件目录存储大小 df -ah
rtm16:~ # df -ah
Filesystem Size Used Avail Use% Mounted on
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
devtmpfs 63G 0 63G 0% /dev
securityfs 0 0 0 - /sys/kernel/security
tmpfs 63G 41M 63G 1% /dev/shm
devpts 0 0 0 - /dev/pts
tmpfs 63G 242M 63G 1% /run
tmpfs 63G 0 63G 0% /sys/fs/cgroup
cgroup 0 0 0 - /sys/fs/cgroup/systemd
pstore 0 0 0 - /sys/fs/pstore
cgroup 0 0 0 - /sys/fs/cgroup/memory
cgroup 0 0 0 - /sys/fs/cgroup/devices
cgroup 0 0 0 - /sys/fs/cgroup/cpuset
cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct
cgroup 0 0 0 - /sys/fs/cgroup/blkio
cgroup 0 0 0 - /sys/fs/cgroup/freezer
cgroup 0 0 0 - /sys/fs/cgroup/perf_event
cgroup 0 0 0 - /sys/fs/cgroup/pids
cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio
cgroup 0 0 0 - /sys/fs/cgroup/hugetlb
/dev/mapper/VG01-lv02 171G 17G 154G 10% /
systemd-1 - - - - /proc/sys/fs/binfmt_misc
mqueue 0 0 0 - /dev/mqueue
hugetlbfs 0 0 0 - /dev/hugepages
debugfs 0 0 0 - /sys/kernel/debug
/dev/sda1 979M 56M 856M 7% /boot
/dev/mapper/VG01-LV01 9.8G 1.7G 7.6G 19% /home
tmpfs 13G 16K 13G 1% /run/user/483
tmpfs 13G 0 13G 0% /run/user/0
binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
rtm16:~ #
介绍:第一列 Filesystem 为文件系统名称,第二列 Size 该文件目录存储大小
第三列 Used 为已使用的存储大小 第四列 Avail 可用的存储大小
第五列 Use% 已使用所占存储百分比, 第六列 Mounted on 文件挂载目录
命令介绍:df (report file system disk space usage):报告文件系统磁盘空间使用
参数 -a 表示ALl ,查看所有块设备的文件系统
-h 表示 human 以人类可阅读的方式展示
df -ah 表示已人可阅读的方式查看所有的块设备文件磁盘使用情况
更多使用请查看 rtm16:~ # df --help
8.4、查看系统物理内存 free -g
rtm16:~ # free -g
total used free shared buffers cached
Mem: 125 4 121 0 0 3
-/+ buffers/cache: 0 125
Swap: 16 0 16
rtm16:~ #
命令介绍: free 展示文件系统中空闲和使用的内存数量
参数 -g(giga) : 表示以giga字节展示内存的数量大小,即单位为(G)
total:表示总物理内存 125G
used:表示已使用的内存 4G
free:表示空闲的物理内存 121G
rtm16:~ # free -h
total used free shared buffers cached
Mem: 125G 4.5G 121G 421M 183M 3.8G
-/+ buffers/cache: 460M 125G
Swap: 16G 0B 16G
rtm16:~ #
该 free -h 以人类可阅读的方式展示内存
8.5、查看磁盘分区信息 fdisk -l
rtm16:~ # fdisk -l
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0007a6a8
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2105343 2103296 1G 83 Linux
/dev/sda2 2105344 35663871 33558528 16G 82 Linux swap / Solaris
/dev/sda3 35663872 419430399 383766528 183G 8e Linux LVM
Disk /dev/mapper/VG01-lv02: 173 GiB, 185740558336 bytes, 362774528 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/VG01-LV01: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
rtm16:~ #
命令介绍:fdisk :操作磁盘分区表
-l (list) :列出指定设备的分区表信息
sd 代表的是SCSI,SATA接口硬盘
hd 代表IDE接口的硬盘
sda 和 hda 最后面的a都代表的是第一块硬盘
sda1 和 hda1 则代表的是该硬盘的第一分区
8.6、查看系统虚拟内存分析报告信息 vmstat
rtm16:/proc # vmstat 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 127157272 187592 4010992 0 0 0 1 0 0 0 0 100 0 0
0 0 0 127157428 187592 4010992 0 0 0 0 31 57 0 0 100 0 0
0 0 0 127157372 187592 4010992 0 0 0 6 33 59 0 0 100 0 0
1 0 0 127157388 187592 4010992 0 0 0 7 34 62 0 0 100 0 0
rtm16:/proc #
该命令表示: 每隔 5s 查看一次系统虚拟内存情况
procs(进程)
r : 表示运行的队列数量(即多少个进程真的分配到CPU),当该值超过了CPU数量,
则会出现CPU瓶颈,该值也和top的负载有关,若负载超过3就比较高,超过5 则
高,超过10则不正常,top的负载类似每秒运行的队列,若队列过大,则表示cpu
很繁忙
b : 表示阻塞的进程数量,若存在,则会影响系统性能
memory(内存)
swpd:虚拟内存已使用的大小,如果大于0则表示机器物理内存不足
free:空闲的物理内存大小
buff:设备之间的缓冲
cache:CPU和内存之间的缓存,用于将物理内存的一部分拿来当做文件和目录的缓
存,提高程序的运行性能
si: 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内
存泄露了,要查找耗内存进程解决掉
so:每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
bi: 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,
默认块大小是1024byte
bo:块设备每秒发送的块数量
in:每秒CPU的中断次数,包括时间中断
cs:每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,
也要进程上下文切换,这个值要越小越好,
us: 用户CPU时间
sy:系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id:空闲 CPU时间,一般来说,id + us + sy = 100,
wa:等待IO CPU时间
st:
9、查看用户打开到最大进程数
/etc/security/limits.conf 配置文件可限制文件打开数,系统进程等资源
/etc/security/limits.d/
目录:该目录下默认有 *-nproc.conf
文件,该文件是用于限制普通用户的线程限制。在CentOS 7版本中为/etc/security/limits.d/20-nproc.conf
。
# 查看用户打开到最大进程数
ulimit -a
# 查看ulimit使用量
lsof -Ki|wc -l
# 查看某个进程的使用量
lsof -p pid | wc -l
# 系统级设置对所有用户有效。可通过两种方式查看系统最大文件限制
cat /proc/sys/fs/file-max
lsof -u ^root #列出除root用户以外打开的文件
lsof -i tcp #查看所有的TCP/UDP连接
10、tree
格式:tree + 参数
1 tree命令行参数:
2
3 -a 显示所有文件和目录。
4 -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
5 -C 在文件和目录清单加上色彩,便于区分各种类型。
6 -d 显示目录名称而非内容。
7 -D 列出文件或目录的更改时间。
8 -f 在每个文件或目录之前,显示完整的相对路径名称。
9 -F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
10 -g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
11 -i 不以阶梯状列出文件或目录名称。
12 -I 不显示符合范本样式的文件或目录名称。
13 -l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
14 -n 不在文件和目录清单加上色彩。
15 -N 直接列出文件和目录名称,包括控制字符。
16 -p 列出权限标示。
17 -P 只显示符合范本样式的文件或目录名称。
18 -q 用"?"号取代控制字符,列出文件和目录名称。
19 -s 列出文件或目录大小。
20 -t 用文件和目录的更改时间排序。
21 -u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
22 -x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
23 tree -L 4 >dirce.doc #tree支持重定向至文件,即可生成UTF8格式的文档..我们也可以在windows 下查看..
#注意:生成的TXT或其他文件在win下面打开时也为乱码...这时我们要选择字符编码为UTF-8..当然..UTF-8是你linux下的默认字符集才可以.....
11、htop
常用命令:
shift + m : 按照内存大小排序。
shift + h : 收缩线程。
q : 退出
空格标记线程
参数说明:
PID:进程标志号,是非零正整数
USER:进程所有者的用户名
PR:进程的优先级别
NI:进程的优先级别数值
VIRT:进程占用的虚拟内存值
RES:进程占用的物理内存值
SHR:进程使用的共享内存值
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
%CPU:该进程占用的CPU使用率
%MEM:该进程占用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间
COMMAND:进程启动的启动命令名称
快捷键:
Shortcut Key | Function Key | 中文说明 |
---|---|---|
h, ? | F1 | 查看htop使用说明 |
S | F2 | htop 设定 |
/ | F3 | 搜索进程 |
\ | F4 | 增量进程过滤器 |
t | F5 | 显示树形结构 |
<, > | F6 | 选择排序方式 |
[ | F7 | 可减少nice值,这样就可以提高对应进程的优先级 |
] | F8 | 可增加nice值,这样就可以降低对应进程的优先级 |
k | F9 | 可对进程传递信号 |
q | F10 | 结束htop |
命令行选项:
选项 | 描述 |
---|---|
-C --no-color | 使用一个单色的配色方案(设置界面为无颜色) |
-d --delay=DELAY | 设置延迟更新时间,单位秒(设置刷新时间,单位为秒) 例如,htop -d 100 命令会使输出在1秒后才会刷新(参数 -d 的单位是10微秒)。 |
-h --help | 显示htop 命令帮助信息 |
-u --user=USERNAME | 只显示一个给定的用户的过程(显示指定用户的进程) 例如,htop -u himanshu 命令会只显示出用户名为 himanshu 的相关进程。 |
-p --pid=PID,PID… | 只显示给定的PIDs |
-s --sort-key COLUMN | 依此列来排序(以指定的列排序)。 例如,htop -s PID 命令会按 PID 列的大小排序来显示。 |
-v –version | 显示版本信息 |
12、grep & uniq & sort & cut
1、grep
-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。'a|b'
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。
2、uniq 去重
Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
uniq 可检查文本文件中重复出现的行列。
-c或--count 在每列旁边显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。
-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
-u或--unique 仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
3、sort 排序:
Linux sort命令用于将文本文件内容加以排序。
sort可针对文本文件的内容,以行为单位来排序。可以用-k来指定列数了。
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 来指定列数
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
4、cut 分割
cut
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除
# 查看系统所有组
cut -d: -f1 /etc/group
5、head
# 如果你只想看文件的前100行,可以使用head命令,如
head -100 filename
# 如果你想查看文件的后100行,可以使用tail命令,如:
tail -100 filename 或 tail -n 100 filename
# 查看文件中间一段,你可以使用sed命令,如:
sed -n '100,200p' filename
这样你就可以只查看文件的第100行到第200行。
6、sed 处理文本文件
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
- -e
动作说明:
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦!
案例:
# 1、在 testfile 文件的第四行后添加一行,并将结果输出到标准输出
$ sed -e 4a\newLine testfile
# 2、将 testfile 的内容列出并且列印行号,同时将第 2~5 行删除! (<nl>打印行号)
$ nl testfile | sed '2,5d'
本应该是要下达 sed -e '2,5d' 才对,但没有 -e 也是可以的,同时也要注意的是, sed 后面接的动作,请务必以 '...' 两个单引号括住
# 3、删除第 3 到最后一行:
$ nl testfile | sed '3,$d'
# 4、在第二行后(即加在第三行) 加上drink tea 字样:
$ nl testfile | sed '2a drink tea'
# 5、如果是要在第二行前,命令如下:
$ nl testfile | sed '2i drink tea'
# 6、如果是要增加两行以上,在第二行后面加入两行字,例如 Drink tea or ..... 与 drink beer?
$ nl testfile | sed '2a Drink tea or ......\
drink beer ?'
# 7、将第 2-5 行的内容取代成为 No 2-5 number
$ nl testfile | sed '2,5c No 2-5 number'
1 HELLO LINUX!
No 2-5 number
6 Taobao
7 Runoob
# 8、仅列出 testfile 文件内的第 5-7 行:
$ nl testfile | sed -n '5,7p'
# 9、搜索 testfile 有 oo 关键字的行:
$ nl testfile | sed -n '/oo/p'
5 Google
7 Runoob
# 10、删除 testfile 所有包含 oo 的
$ nl testfile | sed '/oo/d'
# 11、搜索 testfile,匹配 oo 对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把 oo 替换为 kk,再输出这行:(最后的 q 是退出。)
$ nl testfile | sed -n '/oo/{s/oo/kk/;p;q}'
5 Gkkgle
---
# 1、数据的全局查找与替换
sed 's/要被取代的字串/新的字串/g'
sed -e 's/oo/kk/g' testfile
# 2、将 testfile 文件中每行第一次出现的 oo 用字符串 kk 替换。
sed -e 's/oo/kk/' testfile
(以上的命令修改后内容会到标准输出,不会修改原文件。只有-i会修改源文件)
# 1、选项 i 使 sed 修改文件,全局查找修改:
sed -i 's/oo/kk/g' testfile
# 2、批量操作修改当前目录下以 test 开头的文件:
sed -i 's/oo/kk/g' ./test*
---
# 3、将 IP 前面的部分予以删除:
$ /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
$ /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'
192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
# 4、将 IP 后面的部分予以删除:
$ /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
192.168.1.100
# 5、一条 sed 命令,删除 testfile 第三行到末尾的数据,并把 HELLO 替换为 RUNOOB :
$ nl testfile | sed -e '3,$d' -e 's/HELLO/RUNOOB/'
---
# 直接修改源文件内容-i
$ cat regular_express.txt
runoob.
facebook.
zhihu
# 1、利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !
$ sed -i 's/\.$/\!/g' regular_express.txt
$ cat regular_express.txt
runoob!
facebook!
zhihu-
# 2、利用 sed 直接在 regular_express.txt 最后一行加入 # This is a test:
$ sed -i '$a # This is a test' regular_express.txt
$ cat regular_express.txt
runoob!
facebook!
zhihu-
# This is a test
13、awk筛选
awk 和 sed 命令类似,awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。:
选项 | 含义 |
---|---|
-F fs | 指定以 fs 作为输入行的分隔符,awk 命令默认分隔符为空格或制表符。 |
-f file | 从脚本文件中读取 awk 脚本指令,以取代直接在命令行中输入指令。 |
-v var=val | 在执行处理过程之前,设置一个变量 var,并给其设备初始值为 val。 |
内置变量:
变量 | 解释 |
---|---|
FS | 保存或设置字段分隔符,如FS=”:” |
$n | 指定分隔的第n个字段,如$1、$3分别表示第1、第3列.$0代表输入整行内容 |
NF | 当前行的字段数 |
NR | 记录当前已经读入行的数量 |
FNR | 当前行在源文件中的行数 |
OFS | 输出字段分隔符,默认为空格。 |
ORS | 输出记录分隔符,默认为换行符。 |
RS | 默认的输入记录分隔符,默认情况下是一条新线。 |
RT | 记录终止符。 |
表达式:
表达式 | 含义 |
---|---|
BEGIN | BEGIN和END是两种特殊的模式,没有针对输入进行测试。所有BEGIN模式的动作部分都被合并,就好像所有语句都写在一个BEGIN块中一样。它们在读取任何输入之前执行。 |
END | 所有的结束块都被合并,当所有的输入都被耗尽时(或者当执行exit语句时)执行。开始和结束模式不能与模式表达式中的其他模式组合。开始和结束模式不能缺少动作部分。 |
格式:
awk [选项] '脚本命令' 文件名
# 行匹配语句 awk '' 只能用单引号
| awk -F"sfile.xml" 'NF>=3{print $(NF-1); }'
awk '{print $NF}'
$NF # 表示最后一个列(field)
使用案例:
# 删除temp文件的重复行
awk '!($0 in array) { array[$0]; print }' temp
# 查看最长使用的10个unix命令
awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -rn | head -n 10
# 查看机器的ip列表
ifconfig -a | awk '/Bcast/{print $2}' | cut -c 5-19
# 查看机器的每个远程链接机器的连接数
netstat -antu | awk '$5 ~ /[0-9]:/{split($5, a, ":"); ips[a[1]]++} END {for (ip in ips) print ips[ip], ip | "sort -k1 -nr"}'
# 查看某个进程打开的socket数量
ps aux | grep [process] | awk '{print $2}' | xargs -I % ls /proc/%/fd | wc -l
#查看无线网络的ip
sudo ifconfig wlan0 | grep inet | awk 'NR==1 {print $2}' | cut -c 6-
#批量重命名文件
find . -name '*.jpg' | awk 'BEGIN{ a=0 }{ printf "mv %s name%01d.jpg\n", $0, a++ }' | bash
#查看某个用户打开的文件句柄列表
for x in `ps -u 500 u | grep java | awk '{ print $2 }'`;do ls /proc/$x/fd|wc -l;done
# 计算文件temp的第一列的值的和
awk '{s+=$1}END{print s}' temp
# 查看最常用的命令和使用次数
history | awk '{if ($2 == "sudo") a[$3]++; else a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
# 查找某个时间戳的文件列表
cp -p `ls -l | awk '/Apr 14/ {print $NF}'` /usr/users/backup_dir
# 格式化输出当前的进程信息
ps -ef | awk -v OFS="\n" '{ for (i=8;i<=NF;i++) line = (line ? line FS : "") $i; print NR ":", $1, $2, $7, line, ""; line = "" }'
# 查看输入数据的特定位置的单个字符
echo "abcdefg"|awk 'BEGIN {FS="''"} {print $2}'
# 打印行号
ls | awk '{print NR "\t" $0}'
# 打印当前的ssh 客户端
netstat -tn | awk '($4 ~ /:22\s*/) && ($6 ~ /^EST/) {print substr($5, 0, index($5,":"))}'
# 打印文件第一列不同值的行
awk '!array[$1]++' file.txt
# 打印第二列唯一值
awk '{ a[$2]++ } END { for (b in a) { print b } }' file
# 查看系统所有分区
awk '{if ($NF ~ "^[a-zA-Z].*[0-9]$" && $NF !~ "c[0-9]+d[0-9]+$" && $NF !~ "^loop.*") print "/dev/"$NF}' /proc/partitions
# 查看2到100所有质数
for num in `seq 2 100`;do if [ `factor $num|awk '{print $2}'` == $num ];then echo -n "$num ";fi done;echo
# 查看第3到第6行
awk 'NR >= 3 && NR <= 6' /path/to/file
# 逆序查看文件
awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }'
# 打印99乘法表
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
14、ps查看进程
# 说明:ps -aux中(a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分)
1、查看占用cpu最多的十个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
2、查看占用内存最多的十个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
3、可以使用以下命令查使用内存最多的K个进程,如果是10个进程,K=10,如果是最高的三个,K=3
ps -aux | sort -k4nr | head -K
4、可以使用下面命令查使用CPU最多的K个进程
ps -aux | sort -k3nr | head -K
方法2:top (然后按下P,注意大写)
ps -T -p 2568 # 查看进程2568内线程情况
参数
# 检查所有的系统进程 ps 系统内置命令
[root@ server ~]# ps auxf
(1)-a:显示所有终端机下执行的进程,除了阶段作业领导者之外。显示现行终端机下的所有进程,包括其他用户的进程。
(2)-A:显示所有进程。
(3)-c:显示CLS和PRI栏位。列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。
(4)-C:<指令名称> 指定执行指令的名称,并列出该指令的进程的状况。
(5)-d:显示所有进程,但不包括阶段作业领导者的进程。
(6)-e:此参数的效果和指定"A"参数相同。列出进程时,显示每个进程所使用的环境变量。
(7)-f:显示UID,PPIP,C与STIME栏位。用ASCII字符显示树状结构,表达进程间的相互关系。
(8)-g:<群组名称> 此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。显示现行终端机下的所有进程,包括群组领导者的进程。
(9)-G:<群组识别码>列出属于该群组的进程的状况,也可使用群组名称来指定。
(10)-h:不显示标题列。
(11)-H:显示树状结构,表示进程间的相互关系。
(12)-j或j:采用工作控制的格式显示进程状况。
(13)-l或l:采用详细的格式来显示进程状况。
(14)-L:显示线程LWP的相关信息。
(15)-m或m:显示所有的执行绪。
(16)-n:以数字来表示USER和WCHAN栏位。
(17)-N:显示所有的进程,除了执行ps指令终端机下的进程之外。-p<进程识别码> 指定进程识别码,并列出该进程的状况。
(18)-p:<进程识别码> 此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。
(19)-r:只列出现行终端机正在执行中的进程。
(20)-s:<阶段作业> 指定阶段作业的进程识别码,并列出隶属该阶段作业的进程的状况。s采用进程信号的格式显示进程状况。
(21)-S:列出进程时,包括已中断的子进程资料。
(22)-t:<终端机编号> 指定终端机编号,并列出属于该终端机的进程的状况。t <终端机编号> 此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。
(23)-T:显示现行终端机下的所有进程。
(24)-u:<用户识别码> 此参数的效果和指定"-U"参数相同。u以用户为主的格式来显示进程状况。
(25)-U:<用户识别码>列出属于该用户的进程的状况,也可使用用户名称来指定。U <用户名称>列出属于该用户的进程的状况。
(26)-v:采用虚拟内存的格式显示进程状况。
(27)-V或V:显示版本信息。
(28)-w或w:采用宽阔的格式来显示进程状况。
(29)x:显示所有进程,不以终端机来区分。
(30)X:采用旧式的Linux i386登陆格式显示进程状况。
(31)-y 配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位。
15、screen
- 1、可以使用ctrl+a,然后输入d,退出当前窗口,也可以使用screen -d退出当前窗口。如果要结束只窗口使用exit
- 2、使用screen -r id或者名称重新连接会话,重新连接会话前要求会话的状态为Detached。
- 3、如果会话窗口被kill,状态转为dead无法连接,可以使用screen -wipe命令清除会话窗口
- 4、输入ctl+a s锁定会话,锁定之后输入任何内容屏幕都无反应,输入ctl+a q之后解锁,虽然屏幕锁定的时候无反应但是会接受输入的命令,解锁后会全部执行,切勿输入危险命令,所以建议使用ctl+a x锁定,输入ctl+a x锁定会话,需要输入用户密码后才可以解锁。
# 创建screen终端
screen -R balabala
# 离开 screen 终端
在 screen 终端 下 按下 Ctrl+a d键
# 显示已创建的screen终端
screen -ls
# 连接 screen_id 为 2276 的 screen终端
screen -r 2276
参数说明:
-A 将所有的视窗都调整为目前终端机的大小。
-d<作业名称> 将指定的screen作业离线。
-h<行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r<作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s<shell> 指定建立新视窗时,所要执行的shell。
-S<作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
16、配置LDAP客户端通过SSSD链接LDAP服务器(待完善……)
配置文件位置 /etc/sssd/sssd.conf
配置文件位置**/etc/openldap/ldap.conf**
- dns解析的优先级设定 :系统默认 /etc/hosts 中dns解析设定的优先级高于 /etc/resolv.conf,我们可以通过修改定义优先级的配置文件 /etc/nsswitch.conf,更改优先级。
文件/etc/nsswitch.conf(name service switch configuration,名字服务切换配置)规定通过哪些途径以及按照什么顺序通过这些途径来查找特定类型的信息。还可以指定某个方法奏效或失效时系统将采取什么动作。
配置好sssd.conf后就要配置/etc/nsswitch.conf 来告诉name service switch需要查找那些地方来给登录的用户服务了。
- files sss 表示先查找/etc/passwd, /etc/group等文件,没有的话再查找sss模块。
getent 命令可以用来察看系统的数据库中的相关记录
从passwd库中得到账号addmunx信息:
getent passwd addmunx
查看sssd状态
systemctl status sssd.service
systemctl status oddjobd.service
17、find命令
# eg:
find /var/opt/recover-tmp/*.zip -amin +3 -exec mv {} /var/opt/importzippath \;
find /var/opt/2/xmlfiles/ -mtime +30 -type f
find /var/opt/backup/ -name '*.zip' -type f -atime +3 -exec rm -f {} \;
find /var/opt/backup/ -mtime +90 -type f -exec rm {} \; 2>&1
支持下面的时间类型。
访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
18、cache手动释放缓存
[root@localhost ~]# sync #将缓存数据写入到磁盘中,放置数据丢失 ##多执行几次
[root@localhost ~]# echo 1 > /proc/sys/vm/drop_caches #清空页缓存
[root@localhost ~]# echo 2 > /proc/sys/vm/drop_caches #清空inode和目录树缓存(释放dentries和inodes)
[root@localhost ~]# echo 3 > /proc/sys/vm/drop_caches #清空所有缓存。(3=1+2)
-
1、cached具体被哪些模块使用着(cat /proc/meminfo)
【Active(file) + Inactive(file) + Shmem + mlock_file】== 【Cached + Buffers】# 计算【Active(file) + Inactive(file) + Shmem + mlock_file】 cat /proc/meminfo |grep -E 'Shmem|file|Mlock'|awk '{print $2}' |awk '{sum+=$1} END {print sum}'
-
2、清空缓存脚本(cache/buff)
#!/bin/bash echo "开始清除缓存" sync;sync;sync; # 将未写入的缓存写入硬盘,防止数据丢失 sleep 60 # 暂停 60秒 echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches
19、yum
1.使用YUM查找软件包
命令:yum search~
2.列出所有可安装的软件包
命令:yum list
3.列出所有可更新的软件包
命令:yum list updates
4.列出所有已安装的软件包
命令:yum list installed
5.列出所有已安装但不在Yum Repository 內的软件包
命令:yum list extras
6.列出所指定软件包
命令:yum list ~
7.使用YUM获取软件包信息
命令:yum info ~
8.列出所有软件包的信息
命令:yum info
9.列出所有可更新的软件包信息
命令:yum info updates
10.列出所有已安裝的软件包信息
命令:yum info installed
11.列出所有已安裝但不在Yum Repository 內的软件包信息
命令:yum info extras
12.列出软件包提供哪些文件
命令:yum provides~
20、vim
i 在当前位置生前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
---
3,5 s/^/#/g 注释第3-5行
3,5 s/^#//g 解除3-5行的注释
1,$ s/^/#/g 注释整个文档。
:%s/^/#/g 注释整个文档,此法更快。
在行首添加字符: %s/^/your_word/ 在行尾添加字符 %s/$/your_word/
# 替换命令
s/old/new/ 用old替换new,替换当前行的第一个匹配
s/old/new/g 用old替换new,替换当前行的所有匹配
%s/old/new/ 用old替换new,替换所有行的第一个匹配
%s/old/new/g 用old替换new,替换整个文件的所有匹配
21、Centos7 查看磁盘i/o, 定位占用i/o读写高的进程
概要:
-
iostat 主要用于输出磁盘IO 和 CPU的统计信息。
-
iostat属于sysstat软件包。可以用
yum install sysstat
直接安装。
1、iostat 用法
用法:iostat [选项] [<时间间隔>] [<次数>]
命令参数:
-c: 显示CPU使用情况
-d: 显示磁盘使用情况
-N: 显示磁盘阵列(LVM) 信息
-n: 显示NFS 使用情况
-k: 以 KB 为单位显示
-m: 以 M 为单位显示
-t: 报告每秒向终端读取和写入的字符数和CPU的信息
-V: 显示版本信息
-x: 显示详细信息
-p:[磁盘] 显示磁盘和分区的情况
2、先用iostat查看磁盘io 是否读写负载很高
文件存储位置/var/log/sa
用iostat -d -k -x 1 10
, 查看TPS和吞吐量信息
如果%util接近100%,表明I/O请求太多,I/O系统已经满负荷,磁盘可能存在瓶颈,一般%util大于70%,I/O压力就比较大,读取速度有较多的wait,然后再看其他的参数。
rrqm/s:每秒进行merge的读操作数目。即delta(rmerge)/s
wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s
r/s:每秒完成的读I/O设备次数。即delta(rio)/s
w/s:每秒完成的写I/0设备次数。即delta(wio)/s
rsec/s:每秒读扇区数。即delta(rsect)/s
wsec/s:每秒写扇区数。即delta(wsect)/s
rKB/s:每秒读K字节数。是rsec/s的一半,因为每扇区大小为512字节
wKB/s:每秒写K字节数。是wsec/s的一半
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。即delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度。即delta(aveq)/s/1000(因为aveq的单位为毫秒)
await:平均每次设备I/O操作的等待时间(毫秒)。即delta(ruse+wuse)/delta(rio+wio)
svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的
iostat -c 1 2
查看cpu状态,间隔1秒显示一次,总共显示2次
3、找出使用io高的进程的工具 iotop
yum install iotop -y
直接执行 iotop 命令
4、lsof查看端口占用情况
需要安装 :yum -y install lsof
lsof -i 列出占用端口情况
lsof -i:80 查看80端口情况
5、sar 命令
是分析系统瓶颈的神器,可以用来查看 CPU 、内存、磁盘、网络等性能。
# 其中, “-d”参数代表查看磁盘性能,“-p”参数代表将 dev 设备按照 sda,sdb……名称显示,“1”代表每隔1s采取一次数值,“2”代表总共采取2次数值。
sar -d -p 1 2
# 如果想继续查看一天前的报告;可以查看保存在/var/log/sa/下的sar日志:
sar -d -p -f /var/log/sa/sa11 | more
22、替换文件中的字符串sed
sed 's/要被取代的字串/新的字串/g'
sed -i "s/k8s\.gcr\.io/registry\.cn-shenzhen\.aliyuncs\.com\/cookcodeblog/g" influxdb.yaml
sed -i "s/k8s\.gcr\.io/registry\.cn-shenzhen\.aliyuncs\.com\/cookcodeblog/g" kubernetes-dashboard.yaml
23、时间date
1、手动指定date
date –s 01:01:01 # //设置具体时间,不会对日期做更改
date -s '2018-07-07 10:50' # //这样可以设置全部时间
date -s "2018-2-22 19:10:30"
2、设置时区/系统时间
2.1、查询当前时区
[root@test4 elk]# timedatectl
Local time: 五 2019-12-13 09:56:43 CST
Universal time: 五 2019-12-13 01:56:43 UTC
RTC time: 五 2019-12-13 01:56:42
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[root@test4 elk]#
2.2、查询都有哪些时区
timedatectl list-timezones | grep Asia
2.3、修改时区为Asia/Shanghai
timedatectl set-timezone Asia/Shanghai
3、命令详情备注:
在CentOS 6版本,时间设置有date、hwclock命令。
硬件时钟和系统时钟
(1) 硬件时钟
RTC(Real-Time Clock)或CMOS时钟,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。
(2) 系统时钟
一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。
从CentOS 7开始,使用了一个新的命令timedatectl
timedatectl 命令
(1) 读取时间
timedatectl //等同于 timedatectl status
(2) 设置时间
timedatectl set-time "YYYY-MM-DD HH:MM:SS"
(3) 列出所有时区
timedatectl list-timezones
(4) 设置时区
timedatectl set-timezone Asia/Shanghai
(5) 是否NTP服务器同步
timedatectl set-ntp yes //yes或者no
(6) 将硬件时钟调整为与本地时钟一致
timedatectl set-local-rtc 1
hwclock --systohc --localtime //与上面命令效果一致
注意: 硬件时钟默认使用UTC时间,因为硬件时钟不能保存时区和夏令时调整,修改后就无法从硬件时钟中读取出准确标准时间,因此不建议修改。修改后系统会出现下面的警告。
GMT、UTC、CST、DST 时间
(1) UTC
整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。
(2) GMT
格林威治标准时间 (Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)
(3) CST
中国标准时间 (China Standard Time)
(4) DST
夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。(中国不使用)
GMT + 8 = UTC + 8 = CST
24、ethtool 命令(查询或控制网络驱动程序和硬件设置)
利用 ethtool 可以根据需要更改以太网卡的参数,包括自动协商、速度、双工和局域网唤醒等参数。
# 命令格式
ethtool [<options>] [<devname>]
选项说明:
-a, --show-pause
查看网卡中接收模块 RX、发送模块 TX 和 Autonegotiate 模块的状态:启动 on 或停用 off。
-A, --pause <devname> [autoneg on|off] [rx on|off] [tx on|off]
修改网卡中接收模块 RX、发送模块 TX 和 Autonegotiate 模块的状态:启动 on 或停用 off。
-c, --show-coalesce
查询指定网络设备的合并信息。
-C, --coalesce
更改指定网络设备的合并设置。
-g, --show-ring
显示指定以太网卡的 rx/tx 环参数信息。。
-G, --set-ring
更改指定以太网卡的 rx/tx 环设置。
-i, --driver
显示网卡驱动的信息,如驱动的名称、版本等。
-d, --register-dump <devname> [raw on|off] [hex on|off] [file name]
显示 register dump 信息,部分网卡驱动不支持该选项。
-e, --eeprom-dump <devname> [raw on|off] [offset N] [length N]
显示 EEPROM dump 信息,部分网卡驱动不支持该选项。
-E, --change-eeprom
修改网卡 EEPROM byte。
-k, --show-features, --show-offload <devname>
显示网卡 Offload 参数的状态:on 或 off,包括 rx-checksumming、tx-checksumming 等。
-K, --features, --offload <devname> <feature> on|off ...
修改网卡 Offload 参数的状态。
-p, --identify <devname> [N]
用于区别不同 ethX 对应网卡的物理位置,常用的方法是使网卡 port 上的 led 不断的闪;N 指示了网卡闪的持续时间,以秒为单位。
-P, --show-permaddr
向指定的网络设备查询永久硬件地址。
-r, --negotiate <devname>
如果 auto-negotiation 模块状态为 on,则 restarts auto-negotiation。
-S, --statistics
显示 NIC- and driver-specific 的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。
-t, --test
让网卡执行自我检测,有两种模式:offline or online。
-s, --change
修改网卡的部分配置,包括网卡速度、单工/全双工模式、MAC 地址等。
-h, --help
显示帮助信息。
--version
显示版本信息。
25、软连接硬链接
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
5.在创建软连接的文件中,修改一处文件另一处同时发生修改
6.当删除软连接对象时,不影响源文件使用,当删除源文件后,连接对象失去作用
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
# 必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
# 命令格式:
# 创建软连接对象
ln [参数][源文件或目录][目标文件或目录(我们要创建的软连接名字)]
# 删除软连接对象(只删除软连接,不删除源文件内容)
rm –rf 软链接名称(请注意不要在后面加”/”)
# eg:
[root@master aaa]# pwd
/home/aaa/
[root@master aaa]# ll
total 12
drwxr-xr-x 2 root root 4096 Aug 19 10:06 bb
drwxr-xr-x 2 root root 4096 Aug 19 10:00 cc
drwxr-xr-x 2 root root 4096 Aug 19 09:49 dd
lrwxrwxrwx 1 root root 13 Aug 19 10:07 ee -> /home/aaa/bb/
[root@master aaa]# rm -rf ee
[root@master aaa]# ll
total 12
drwxr-xr-x 2 root root 4096 Aug 19 10:06 bb
drwxr-xr-x 2 root root 4096 Aug 19 10:00 cc
drwxr-xr-x 2 root root 4096 Aug 19 09:49 dd
[root@master aaa]# ln -s /home/aaa/bb/ ./ee
[root@master aaa]# ll
total 12
drwxr-xr-x 2 root root 4096 Aug 19 10:06 bb
drwxr-xr-x 2 root root 4096 Aug 19 10:00 cc
drwxr-xr-x 2 root root 4096 Aug 19 09:49 dd
lrwxrwxrwx 1 root root 13 Aug 19 10:23 ee -> /home/aaa/bb/
26、ls
# 语法
ls [-alrtAFR] [name...]
参数 :
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-d 只列出目录(不递归列出目录内的文件)。
-l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。
-r 倒序显示文件和目录。
-t 将按照修改时间排序,最新的文件在最前面。
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 递归显示目录中的所有文件和子目录。
在使用 ls -l 命令时,第一列的字符表示文件或目录的类型和权限。其中第一个字符表示文件类型,例如:
- 表示普通文件
d 表示目录
l 表示符号链接
c 表示字符设备文件
b 表示块设备文件
s 表示套接字文件
p 表示管道文件
27、系统常用的日志(日志是用来记录重大事件的工具)
/var/log/message # 系统信息日志,包含错误信息等
/var/log/secure # 系统登录日志
/var/log/cron # 定时任务日志
/var/log/maillog # 邮件日志
/var/log/boot.log # 系统启动日志
二、常用快捷键
三、附加
1、全球热门时区及其缩写
缩写 | 全称 | 中文名称 | 类型 | UTC 偏移量 |
---|---|---|---|---|
+03 | +03 | - | UTC +03:00 | |
+04 | +04 | - | UTC +04:00 | |
+05 | +05 | - | UTC +05:00 | |
+0530 | +0530 | - | UTC +05:30 | |
+06 | +06 | - | UTC +06:00 | |
[ACDT](http://www.timeofdate.com/timezone/abbr/ACDT/Australian Central Daylight Time) | Australian Central Daylight Time | 澳大利亚中部夏令时 | 夏令时 | UTC +10:30 |
[ACST](http://www.timeofdate.com/timezone/abbr/ACST/Australian Central Standard Time) | Australian Central Standard Time | 澳大利亚中部标准时间 | - | UTC +09:30 |
[ACT](http://www.timeofdate.com/timezone/abbr/ACT/Acre Time) | Acre Time | 阿卡时间 | - | UTC -05:00 |
[ACWST](http://www.timeofdate.com/timezone/abbr/ACWST/Australian Central Western Standard Time) | Australian Central Western Standard Time | 澳大利亚中西部标准时间 | - | UTC +08:45 |
[ADT](http://www.timeofdate.com/timezone/abbr/ADT/Atlantic Daylight Time) | Atlantic Daylight Time | 大西洋夏令时间 | 夏令时 | UTC -03:00 |
[AEDT](http://www.timeofdate.com/timezone/abbr/AEDT/Australian Eastern Daylight Time) | Australian Eastern Daylight Time | 澳大利亚东部夏令时 | 夏令时 | UTC +11:00 |
[AEST](http://www.timeofdate.com/timezone/abbr/AEST/Australian Eastern Standard Time) | Australian Eastern Standard Time | 澳大利亚东部标准时间 | - | UTC +10:00 |
[AFT](http://www.timeofdate.com/timezone/abbr/AFT/Afghanistan Time) | Afghanistan Time | 阿富汗时间 | - | UTC +04:30 |
[AKDT](http://www.timeofdate.com/timezone/abbr/AKDT/Alaska Daylight Time) | Alaska Daylight Time | 阿拉斯加夏令时 | 夏令时 | UTC -08:00 |
[AKST](http://www.timeofdate.com/timezone/abbr/AKST/Alaska Standard Time) | Alaska Standard Time | 阿拉斯加标准时间 | - | UTC -09:00 |
[AMST](http://www.timeofdate.com/timezone/abbr/AMST/Amazon Summer Time) | Amazon Summer Time | 亚马逊夏令时 | 夏令时 | UTC -03:00 |
[AMT](http://www.timeofdate.com/timezone/abbr/AMT/Amazon Time) | Amazon Time | 亚马逊时间 | - | UTC -04:00 |
[ART](http://www.timeofdate.com/timezone/abbr/ART/Argentina Time) | Argentina Time | 阿根廷时间 | - | UTC -03:00 |
[AST](http://www.timeofdate.com/timezone/abbr/AST/Arabia Standard Time) | Arabia Standard Time | 阿拉伯标准时间 | - | UTC +03:00 |
[AST](http://www.timeofdate.com/timezone/abbr/AST/Atlantic Standard Time) | Atlantic Standard Time | 大西洋标准时间 | - | UTC -04:00 |
[AWST](http://www.timeofdate.com/timezone/abbr/AWST/Australian Western Standard Time) | Australian Western Standard Time | 澳大利亚西部标准时间 | - | UTC +08:00 |
[AZOST](http://www.timeofdate.com/timezone/abbr/AZOST/Azores Summer Time) | Azores Summer Time | 亚速尔群岛夏令时 | 夏令时 | UTC -00:00 |
[AZOT](http://www.timeofdate.com/timezone/abbr/AZOT/Azores Time) | Azores Time | 亚速尔群岛时间 | - | UTC -01:00 |
[BOT](http://www.timeofdate.com/timezone/abbr/BOT/Bolivia Time) | Bolivia Time | 玻利维亚时间 | - | UTC -04:00 |
[BRST](http://www.timeofdate.com/timezone/abbr/BRST/Brasília Summer Time) | Brasília Summer Time | 巴西利亚夏令时 | 夏令时 | UTC -02:00 |
[BRT](http://www.timeofdate.com/timezone/abbr/BRT/Brasília Time) | Brasília Time | 巴西利亚时间 | - | UTC -03:00 |
[BST](http://www.timeofdate.com/timezone/abbr/BST/British Summer Time) | British Summer Time | 英国夏令时间 | 夏令时 | UTC +01:00 |
[BTT](http://www.timeofdate.com/timezone/abbr/BTT/Bhutan Time) | Bhutan Time | 不丹时间 | - | UTC +06:00 |
[CAT](http://www.timeofdate.com/timezone/abbr/CAT/Central Africa Time) | Central Africa Time | 中非时间 | - | UTC +02:00 |
[CDT](http://www.timeofdate.com/timezone/abbr/CDT/Central Daylight Time) | Central Daylight Time | 中部夏令时间 | 夏令时 | UTC -05:00 |
[CDT](http://www.timeofdate.com/timezone/abbr/CDT/Cuba Daylight Time) | Cuba Daylight Time | 古巴夏令时 | 夏令时 | UTC -04:00 |
[CEST](http://www.timeofdate.com/timezone/abbr/CEST/Central European Summer Time) | Central European Summer Time | 欧洲中部夏令时间 | 夏令时 | UTC +02:00 |
[CET](http://www.timeofdate.com/timezone/abbr/CET/Central European Time) | Central European Time | 欧洲中部时间 | - | UTC +01:00 |
[CHADT](http://www.timeofdate.com/timezone/abbr/CHADT/Chatham Island Daylight Time) | Chatham Island Daylight Time | 查塔姆岛夏令时 | 夏令时 | UTC +13:45 |
[CHAST](http://www.timeofdate.com/timezone/abbr/CHAST/Chatham Island Standard Time) | Chatham Island Standard Time | 查塔姆岛标准时间 | - | UTC +12:45 |
[CHOST](http://www.timeofdate.com/timezone/abbr/CHOST/Choibalsan Summer Time) | Choibalsan Summer Time | 乔巴山夏令时 | 夏令时 | UTC +09:00 |
[CHOT](http://www.timeofdate.com/timezone/abbr/CHOT/Choibalsan Time) | Choibalsan Time | 乔巴山时间 | - | UTC +08:00 |
[CHUT](http://www.timeofdate.com/timezone/abbr/CHUT/Chuuk Time) | Chuuk Time | 丘克时间 | - | UTC +10:00 |
[CKT](http://www.timeofdate.com/timezone/abbr/CKT/Cook Island Time) | Cook Island Time | 库克群岛时间 | - | UTC -10:00 |
[CLST](http://www.timeofdate.com/timezone/abbr/CLST/Chile Summer Time) | Chile Summer Time | 智利夏令时 | 夏令时 | UTC -03:00 |
[CLT](http://www.timeofdate.com/timezone/abbr/CLT/Chile Standard Time) | Chile Standard Time | 智利标准时间 | - | UTC -04:00 |
[CST](http://www.timeofdate.com/timezone/abbr/CST/Central Standard Time) | Central Standard Time | 中部标准时间 | - | UTC -06:00 |
[CST](http://www.timeofdate.com/timezone/abbr/CST/China Standard Time) | China Standard Time | 中国标准时间 | - | UTC +08:00 |
[CST](http://www.timeofdate.com/timezone/abbr/CST/Cuba Standard Time) | Cuba Standard Time | 古巴标准时间 | - | UTC -05:00 |
[ChST](http://www.timeofdate.com/timezone/abbr/ChST/Chamorro Standard Time) | Chamorro Standard Time | 查莫罗标准时间 | - | UTC +10:00 |
[EASST](http://www.timeofdate.com/timezone/abbr/EASST/Easter Island Summer Time) | Easter Island Summer Time | 复活岛夏令时 | 夏令时 | UTC -05:00 |
[EAST](http://www.timeofdate.com/timezone/abbr/EAST/Easter Island Standard Time) | Easter Island Standard Time | 复活节岛标准时间 | - | UTC -06:00 |
[EAT](http://www.timeofdate.com/timezone/abbr/EAT/Eastern Africa Time) | Eastern Africa Time | 非洲东部时间 | - | UTC +03:00 |
[ECT](http://www.timeofdate.com/timezone/abbr/ECT/Ecuador Time) | Ecuador Time | 厄瓜多尔时间 | - | UTC -05:00 |
[EDT](http://www.timeofdate.com/timezone/abbr/EDT/Eastern Daylight Time) | Eastern Daylight Time | 东部夏令时间 | 夏令时 | UTC -04:00 |
[EEST](http://www.timeofdate.com/timezone/abbr/EEST/Eastern European Summer Time) | Eastern European Summer Time | 东欧夏令时 | 夏令时 | UTC +03:00 |
[EET](http://www.timeofdate.com/timezone/abbr/EET/Eastern European Time) | Eastern European Time | 东欧时间 | - | UTC +02:00 |
[EST](http://www.timeofdate.com/timezone/abbr/EST/Eastern Standard Time) | Eastern Standard Time | 东部标准时间 | - | UTC -05:00 |
[FKST](http://www.timeofdate.com/timezone/abbr/FKST/Falkland Islands Summer Time) | Falkland Islands Summer Time | 福克兰群岛夏令时 | - | UTC -03:00 |
[GFT](http://www.timeofdate.com/timezone/abbr/GFT/French Guiana Time) | French Guiana Time | 法属圭亚那时间 | - | UTC -03:00 |
[GILT](http://www.timeofdate.com/timezone/abbr/GILT/Gilbert Island Time) | Gilbert Island Time | 吉尔伯特群岛时间 | - | UTC +12:00 |
[GMT](http://www.timeofdate.com/timezone/abbr/GMT/Greenwich Mean Time) | Greenwich Mean Time | 格林威治标准时间 | - | UTC -00:00 |
[GST](http://www.timeofdate.com/timezone/abbr/GST/Gulf Standard Time) | Gulf Standard Time | 海湾标准时间 | - | UTC +04:00 |
[HKT](http://www.timeofdate.com/timezone/abbr/HKT/Hong Kong Time) | Hong Kong Time | 香港时间 | - | UTC +08:00 |
[HST](http://www.timeofdate.com/timezone/abbr/HST/Hawaii Standard Time) | Hawaii Standard Time | 夏威夷标准时间 | - | UTC -10:00 |
[ICT](http://www.timeofdate.com/timezone/abbr/ICT/Indochina Time) | Indochina Time | 印度支那时间 | - | UTC +07:00 |
[IDT](http://www.timeofdate.com/timezone/abbr/IDT/Israel Daylight Time) | Israel Daylight Time | 以色列夏令时 | 夏令时 | UTC +03:00 |
[IRDT](http://www.timeofdate.com/timezone/abbr/IRDT/Iran Daylight Time) | Iran Daylight Time | 伊朗夏令时 | 夏令时 | UTC +04:30 |
[IRST](http://www.timeofdate.com/timezone/abbr/IRST/Iran Standard Time) | Iran Standard Time | 伊朗标准时间 | - | UTC +03:30 |
[IST](http://www.timeofdate.com/timezone/abbr/IST/India Standard Time) | India Standard Time | 印度标准时间 | - | UTC +05:30 |
[IST](http://www.timeofdate.com/timezone/abbr/IST/Irish Standard Time) | Irish Standard Time | 爱尔兰标准时间 | 夏令时 | UTC +01:00 |
[IST](http://www.timeofdate.com/timezone/abbr/IST/Israel Standard Time) | Israel Standard Time | 以色列标准时间 | - | UTC +02:00 |
[JST](http://www.timeofdate.com/timezone/abbr/JST/Japan Standard Time) | Japan Standard Time | 日本标准时间 | - | UTC +09:00 |
[KOST](http://www.timeofdate.com/timezone/abbr/KOST/Kosrae Time) | Kosrae Time | 科斯雷时间 | - | UTC +11:00 |
[KST](http://www.timeofdate.com/timezone/abbr/KST/Korea Standard Time) | Korea Standard Time | 韩国标准时间 | - | UTC +08:30 |
[LINT](http://www.timeofdate.com/timezone/abbr/LINT/Line Islands Time) | Line Islands Time | 莱恩群岛时间 | - | UTC +14:00 |
[MDT](http://www.timeofdate.com/timezone/abbr/MDT/Mountain Daylight Time) | Mountain Daylight Time | 山区夏令时 | 夏令时 | UTC -06:00 |
[MHT](http://www.timeofdate.com/timezone/abbr/MHT/Marshall Islands Time) | Marshall Islands Time | 马绍尔群岛时间 | - | UTC +12:00 |
[MSK](http://www.timeofdate.com/timezone/abbr/MSK/Moscow Standard Time) | Moscow Standard Time | 莫斯科标准时间 | - | UTC +03:00 |
[MST](http://www.timeofdate.com/timezone/abbr/MST/Mountain Standard Time) | Mountain Standard Time | 山地标准时间 | - | UTC -07:00 |
[MYT](http://www.timeofdate.com/timezone/abbr/MYT/Malaysia Time) | Malaysia Time | 马来西亚时间 | - | UTC +08:00 |
[NDT](http://www.timeofdate.com/timezone/abbr/NDT/Newfoundland Daylight Time) | Newfoundland Daylight Time | 纽芬兰夏令时 | 夏令时 | UTC -02:30 |
[NPT](http://www.timeofdate.com/timezone/abbr/NPT/Nepal Time ) | Nepal Time | 尼泊尔时间 | - | UTC +05:45 |
[NST](http://www.timeofdate.com/timezone/abbr/NST/Newfoundland Standard Time) | Newfoundland Standard Time | 纽芬兰标准时间 | - | UTC -03:30 |
[NUT](http://www.timeofdate.com/timezone/abbr/NUT/Niue Time) | Niue Time | 纽埃时间 | - | UTC -11:00 |
[NZDT](http://www.timeofdate.com/timezone/abbr/NZDT/New Zealand Daylight Time) | New Zealand Daylight Time | 新西兰夏令时 | 夏令时 | UTC +13:00 |
[NZST](http://www.timeofdate.com/timezone/abbr/NZST/New Zealand Standard Time) | New Zealand Standard Time | 新西兰标准时间 | - | UTC +12:00 |
[PDT](http://www.timeofdate.com/timezone/abbr/PDT/Pacific Daylight Time) | Pacific Daylight Time | 太平洋夏令时 | 夏令时 | UTC -07:00 |
[PET](http://www.timeofdate.com/timezone/abbr/PET/Peru Time) | Peru Time | 秘鲁时间 | - | UTC -05:00 |
[PGT](http://www.timeofdate.com/timezone/abbr/PGT/Papua New Guinea Time) | Papua New Guinea Time | 巴布亚新几内亚时间 | - | UTC +10:00 |
[PHT](http://www.timeofdate.com/timezone/abbr/PHT/Philippine Time) | Philippine Time | 菲律宾时间 | - | UTC +08:00 |
[PKT](http://www.timeofdate.com/timezone/abbr/PKT/Pakistan Standard Time) | Pakistan Standard Time | 巴基斯坦标准时间 | - | UTC +05:00 |
[PONT](http://www.timeofdate.com/timezone/abbr/PONT/Pohnpei Standard Time) | Pohnpei Standard Time | 波纳佩标准时间 | - | UTC +11:00 |
[PST](http://www.timeofdate.com/timezone/abbr/PST/Pacific Standard Time) | Pacific Standard Time | 太平洋标准时间 | - | UTC -08:00 |
[SAST](http://www.timeofdate.com/timezone/abbr/SAST/South Africa Standard Time) | South Africa Standard Time | 南非标准时间 | - | UTC +02:00 |
[SBT](http://www.timeofdate.com/timezone/abbr/SBT/Solomon Islands Time) | Solomon Islands Time | 所罗门群岛时间 | - | UTC +11:00 |
[SGT](http://www.timeofdate.com/timezone/abbr/SGT/Singapore Time) | Singapore Time | 新加坡时间 | - | UTC +08:00 |
[SRT](http://www.timeofdate.com/timezone/abbr/SRT/Suriname Time) | Suriname Time | 苏里南时间 | - | UTC -03:00 |
[SST](http://www.timeofdate.com/timezone/abbr/SST/Samoa Standard Time) | Samoa Standard Time | 萨摩亚标准时间 | - | UTC -11:00 |
[TAHT](http://www.timeofdate.com/timezone/abbr/TAHT/Tahiti Time) | Tahiti Time | 塔希提岛时间 | - | UTC -10:00 |
[TLT](http://www.timeofdate.com/timezone/abbr/TLT/East Timor Time) | East Timor Time | 东帝汶时间 | - | UTC +09:00 |
[TVT](http://www.timeofdate.com/timezone/abbr/TVT/Tuvalu Time) | Tuvalu Time | 图瓦卢时间 | - | UTC +12:00 |
[ULAST](http://www.timeofdate.com/timezone/abbr/ULAST/Ulaanbaatar Summer Time) | Ulaanbaatar Summer Time | 乌兰巴托夏令时 | 夏令时 | UTC +09:00 |
[ULAT](http://www.timeofdate.com/timezone/abbr/ULAT/Ulaanbaatar Time) | Ulaanbaatar Time | 乌兰巴托时间 | - | UTC +08:00 |
[UYST](http://www.timeofdate.com/timezone/abbr/UYST/Uruguay Summer Time) | Uruguay Summer Time | 乌拉圭夏令时 | 夏令时 | UTC -02:00 |
[UYT](http://www.timeofdate.com/timezone/abbr/UYT/Uruguay Time) | Uruguay Time | 乌拉圭时间 | - | UTC -03:00 |
[VET](http://www.timeofdate.com/timezone/abbr/VET/Venezuelan Standard Time) | Venezuelan Standard Time | 委内瑞拉标准时间 | - | UTC -04:00 |
[WAST](http://www.timeofdate.com/timezone/abbr/WAST/West Africa Summer Time) | West Africa Summer Time | 西非夏令时 | 夏令时 | UTC +02:00 |
[WAT](http://www.timeofdate.com/timezone/abbr/WAT/West Africa Time) | West Africa Time | 西非时间 | - | UTC +01:00 |
[WEST](http://www.timeofdate.com/timezone/abbr/WEST/Western European Summer Time) | Western European Summer Time | 西欧夏令时间 | 夏令时 | UTC +01:00 |
[WET](http://www.timeofdate.com/timezone/abbr/WET/Western European Time) | Western European Time | 西欧时间 | - | UTC -00:00 |
[WIB](http://www.timeofdate.com/timezone/abbr/WIB/Western Indonesian Time) | Western Indonesian Time | 印尼西部时间 | - | UTC +07:00 |
[WIT](http://www.timeofdate.com/timezone/abbr/WIT/Eastern Indonesian Time) | Eastern Indonesian Time | 印度尼西亚东部时间 | - | UTC +09:00 |
[WITA](http://www.timeofdate.com/timezone/abbr/WITA/Central Indonesian Time) | Central Indonesian Time | 印度尼西亚中部时间 | - | UTC +08:00 |
2、正则
使用案例:
常用的正则表达式
一、校验数字的表达式
1 数字:^[0-9]*$
2 n位的数字:^\d{n}$
3 至少n位的数字:^\d{n,}$
4 m-n位的数字:^\d{m,n}$
5 零和非零开头的数字:^(0|[1-9][0-9]*)$
6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$
8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
11 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13 非负整数:^\d+$ 或 ^[1-9]\d*|0$
14 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
二、校验字符的表达式
1 汉字:^[\u4e00-\u9fa5]{0,}$
2 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
3 长度为3-20的所有字符:^.{3,20}$
4 由26个英文字母组成的字符串:^[A-Za-z]+$
5 由26个大写英文字母组成的字符串:^[A-Z]+$
6 由26个小写英文字母组成的字符串:^[a-z]+$
7 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
8 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
9 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
11 可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+
12 禁止输入含有~的字符:[^~\x22]+
三、特殊需求表达式
1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
4 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
5 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
6 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
7 身份证号(15位、18位数字):^\d{15}|\d{18}$
8 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
9 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
10 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
11 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
12 日期格式:^\d{4}-\d{1,2}-\d{1,2}
13 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
14 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
15 钱的输入格式:
16 1.有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$
17 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$
18 3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$
19 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$
20 5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$
21 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$
22 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
23 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
24 备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里
25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
26 中文字符的正则表达式:[\u4e00-\u9fa5]
27 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
28 空白行的正则表达式:\n\s*\r (可以用来删除空白行)
29 HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)
30 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
31 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
32 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
33 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)
34 IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
3、特殊符号英文读法
GB = Gigabyte,千兆 TB= terabyte/Trillionbyte 兆兆 1KB (Kilobyte 千字节 )=1024B,1MB (Megabyte 兆字节 简称“兆”)
---
特殊符号的英文 + 读音(音标)
` backquote 反引号
~ tilde
! exclam
@ at
# numbersign,英语国家是hash,美语是pound,音乐里作sharp,如:C#
$ dollar
% percent
^ caret
& ampersand
* asterisk,star(美语),数学公式中作multiply
( parenleft,opening parentheses
) parenright,closing paretheses
- minus;hyphen连字符,不读
_ underscore
+ plus
= equal
[ bracketleft,opening bracket
] bracketright,closing bracket
{ braceleft
} braceright
; semicolon
: colon
' quote
" doublequote
/ slash
\ backslash 反斜杠
| bar
, comma
< less > greater
. period
? question
space 空格
-----------------------------------
下面是一些特殊符号的英文读法,
主要是数学符号
< is less than
> is more than
≮ is not less than
≯ is not more than
≤ is less than or equal to 小于或等于号
- hyphen 连字符
≥ is more than or equal to 大于或等于号
' apostrophe 省略号,英文中省略字符用的撇号;所有格符号
% percent
- dash 破折号
‰ per mille
∞ infinity 无限大号
∝ varies as 与…成比例
( ) parentheses 圆括号
√ (square) root 平方根
[ ] square brackets 方括号
∵ since; because 因为
《 》 French quotes 法文引号;书名号
∴ hence 所以
… ellipsis 省略号
∷ equals, as (proportion) 等于,成比例
¨ tandem colon 双点号
∠ angle 角
∶ ditto 双点号
⌒ semicircle 半圆
‖ parallel 双线号
⊙ circle 圆
/ virgule 斜线号
○ circumference 圆周
~ swung dash 代字号
△ triangle 三角形
§ section; division 分节号
⊥ perpendicular to 垂直于
→ arrow 箭号;参见号
∪ union of 并,合集
∩ intersection of 交,通集
∫ the integral of …的积分
± plus or minus 正负号
∑ summation of 总和
× is multiplied by 乘号
° degree 度
÷ is divided by 除号
′ minute 分
″ second 秒
≠ is not equal to 不等于号
≡ is equivalent to 全等于号
℃ Celsius degree 摄氏度
≌ is equal to or approximately equal to 等于或约等于号
-----------------------------------
再附送希腊字母的读法
α Α alpha ['ælfa]
β Β beta ['bi:ta / 'beita]
γ Γ gamma ['gæma]
δ Δ delta ['delta]
ε Ε epsilon ['epsilan / ep'sailan]
ζ Ζ zeta ['zi:ta]
η Η eta ['i:ta / 'eita]
θ Θ theta ['θita]
ι Ι iota [ai'outa]
κ Κ kappa ['kæpa]
λ Λ lamda ['læmda]
μ Μ mu [mju:]
ν Ν nu [nju:]
ξ Ξ xi [ksai / gzai / zai]
ο Ο omicron [ou'maikran]
π Π pi [pai]
ρ Ρ rho [rou]
σ Σ sigma ['sigma]
τ Τ tau [tau]
υ Υ upsilon ['ju:psilon / ju:p'sailan] o 是反 c 。
φ Φ phi [fai]
χ Χ chi [kai]
ψ Ψ psi [psi:]
ω Ω omega ['oumiga / ou'mi:ga]
4、git
Git Bash注册绑定这个账号
git config --global user.name "enjiafe"
git config --global user.email "fenglong.jiang@163.com"
git config --list # 查看用户
注意:git config --global 参数,有了这个参数表示你这台机器上所有的git仓库都会使用这个配置,当然你也可以对某个仓库指定不同的用户名和邮箱
接着在Git Bash输出下面的代码,用于查看ssh公钥是否已经存在
cat ~/.ssh/id_rsa.pub
ssh-keygen -t rsa -C "fenglong.jiang@163.com"
查看tag命令
// 查看本地的所有Tag
git tag
创建tag命令
git tag -a v1.0 -m "对Tag的描述信息"
提交tag命令,使用git push origin [tagName]
推送单个分支。
git push origin v1.0
推送本地所有tag,使用git push origin --tags
。
git push origin --tags
删除tag命令
git tag -d v1.0
要删除远程服务器上的tag,可以使用如下的命令:
git push origin --delete tag v1.0
一、 Git 常用命令速查
git branch 查看本地所有分支
git status 查看当前状态
git commit 提交
git branch -a 查看所有的分支
git branch -r 查看远程所有分支
git commit -am "init" 提交并且加注释
git remote add origin git@192.168.1.119:ndshow
git push origin master 将文件给推到服务器上
git remote show origin 显示远程库origin里的资源
git push origin master:develop
git push origin master:hb-dev 将本地库与服务器上的库进行关联
git checkout --track origin/dev 切换到远程dev分支
git branch -D master develop 删除本地库develop
git checkout -b dev 建立一个新的本地分支dev
git merge origin/dev 将分支dev与当前分支进行合并
git checkout dev 切换到本地dev分支
git remote show 查看远程库
git add .
git rm 文件名(包括路径) 从git中删除指定文件
git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来
git config --list 看所有用户
git ls-files 看已经被提交的
git rm [file name] 删除一个文件
git commit -a 提交当前repos的所有的改变
git add [file name] 添加一个文件到git index
git commit -v 当你用-v参数的时候可以看commit的差异
git commit -m "This is the message describing the commit" 添加commit信息
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git log 看你commit的日志
git diff 查看尚未暂存的更新
git rm a.a 移除文件(从暂存区和工作区中删除)
git rm --cached a.a 移除文件(只从暂存区中删除)
git commit -m "remove" 移除文件(从Git中删除)
git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来