目录
15.链接
1.终端相关&用户
shift + pageup 终端向上翻页
shift + pagedown 终端向下翻页
ctrl+ l 清屏
clear 清屏
echo $PATH 查看某个变量的值
echo $? 查看上个程序的退出值是怎样的,查看上个程序是怎样退出的
date 查看当前时间
useradd xxx 添加xxx这个用户(root权限)
passwd xxx 修改xxx用户的权限
2.手册的使用
man man 查看手册的使用
区段1:用户指令(Executable programs or shell command)
区段2:系统调用(functions provided by the kernel)
区段3:程序库调用(function within program libraries)
区段4:设备(in /dev)
区段5:文件格式
区段6:游戏
区段7:杂项(说了一些机制)
区段8:系统指令
区段9:内核内部指令
区段n:Tcl或Tk指令
man 1 mkfifo 查看的是命令行中mkfifo的使用方法
man 3 mkfifo 查看的程序库中mkfifo函数的使用方法
man 7 signal 查看的是signal的一些机制
man 7 socket 查看的是socket的一些机制(官方教学)
man 1 printf 查看的是命令行中printf的使用方法
man 3 printf 查看的程序库中printf函数的使用方法
man -k pthread 查看线程相关接口
3.搜索
alias 查看命令的别名(可以在home目录下的隐藏文件.bashrc中看到一些默认设置,对于新手可以将rm的别名设置成rm -i询问一下是否要真的删除)
which alias 查看alias命令在哪里
find . -name "*h" | xargs grep "off_t" 查看当前目录及子目录下包含有off_t字段的以h结尾的文件并显示相关内容
find / -name debugfs 在根目录及子目录下找debugfs文件在哪
find . -name CMakeLists.txt 在当前目录及子目录下找名字为CMakeLists.txt的文件,注意不要加双引号
4.系统相关操作
shutdown -h 1 1分钟后关机,不同版本上的使用有些许区别(root权限)
poweroff 断电,关机(root权限)
reboot 重启系统(root权限)
uname -a 内核版本查看,显示 -m、 -n、 -r、 -s 和 -v 标志指定的所有信息
-m 显示硬件运行系统的机器 ID 号
-n 显示节点名称。可能是用以标识系统且为 UUCP 通信网络所知的名称
-s 显示系统名。标志缺省为开
-v 显示操作系统版本
uname -r 显示发行版号
lsb_release -a 查看发行版本信息
free -m 查看空闲内存
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 查看物理CPU个数
cat /proc/cpuinfo| grep "cpu cores"| uniq 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "processor"| wc -l 查看逻辑CPU的个数
lscpu 查看系统的CPU信息
nproc 查看系统中有几个核心
cat /proc/interrupts 查看当前系统的中断
top 查看cpu使用情况
htop 查看cpu使用情况
cat /proc/1/maps 查看一号进程的线性地址映射
5.系统调用相关
strace pwd 显示出pwd命令执行过程中所调用到的各个系统调用
strace exename 查看程序exename运行时所产生的各个系统调用
dmesg 查看内核日志信息,刚刚开机时可查看开机时内核有关信息
grep -E -iw "emerg|alert|critical|error" /var/log/messages 查看出现的重大的错误
/var/log/message 内核消息及各种应用程序的公共日志信息,包括启动、I/O错误、 网络错误
6.进程管理相关
ps -ef | grep nginx | grep -v grep 查看除了grep以为正在运行有关nginx的进程
ll /proc/62528 列出PID为62528的进程相关的信息
ll /proc/62528 | grep exe 找出进程号为62528的进程的应用程序
man -k pthread 查看线程相关接口
kill -l 查看所有的信号
trap -lp 查看所有的信号
ps -eLf 按照线程位最小单位去看当前的程序的运行情况
ps -Lf pid 根据pid去查看进程的线程分布运行情况
ps -Lw pid 查看进程号为pid的进程有几个线程
7.文件系统相关
tree 显示文件目录
umask 指定用户创建文件时的掩码,其中的mode和chmod的命令中的格式是一样的,如果不用mode参数,则显示当前的umask设置,如果用-S参数,则以符号形式显示设置
umask -S 以符号形式显示设置(例如:u=rwx,g=rwx,o=rx)
umask 0 将掩码设置成0
umask 显示掩码,一般默认是0002(第一个零表示八进制,后面三个分别表示文件所有者,群组用户,其他用户)
touch file.txt 创建一个file.txt的文件,默认权限是0666,掩码是002,显示的值0664,664=(666&(~002)),002取反是775.
110 110 110(666)
111 111 101(775)
110 110 100(664)
显示的权限 = mode &(~umask)
zip -q -r TARS.zip TARS/ 递归且沉默(不显示执行过程)地压缩TARS路径下的文件
df -i 查看每个硬盘分区的inode总数和已经使用的数量
ls --all 查看当前目录下所有文件
ls -a 查看当前目录下所有文件
ls -i 显示当前目录下的文件及其Inode编号
ls -l 显示出文件的username和groupname
ls -n 显示出文件的userid和groupid(/etc/passwd,/etc/group)
ls -l --block-size=g 显示出文件的size(以g为单位)
ls -l --block-size=m 显示出文件的size(以m为单位)
ls -l --block-size=k 显示出文件的size(以k为单位)
touch -- -a 当前路径下创建一个-a的文件(--表示当前选项结束,后面的都是非选项的传参)
touch ./-b 当前目录下创建一个-b的文件
df -h 查看系统目前磁盘空间使用情况(任何路径都可执行)
du -sh 统计当前目录所占磁盘空间大小
du -h --max-depth=1 统计当前目录下所有一级子目录文件夹大小
du -h --max-depth=1 |sort 统计当前目录下所有一级子目录文件夹大小并排序
du -h --max-depth=1 |grep 'G' |sort #统计当前目录下所有大小上G的一级子目录并排序
du -h --max-depth=2 |grep 'G' |sort #统计当前目录下所有大小上G的二级子目录并排序
du -h --max-depth=1 |grep [TG] |sort -nr #统计当前目录下所有大小上T,G的一级子目录并倒序排序
fdisk -l
lsof | grep deleted 看是否有已删除文件,占用内存,是否有文件已被删除,但是引用该文件的进程
仍然活动,导致文件所占磁盘没有被释放.
cat /proc/filesystems 查看内核支持的文件系统
mkfs -t ext2 /dev/sda5 创建一个文件系统,会格式化该块空间,如果有内容一定要注意备份.
mkfs.ext2 /dev/sda5 创建一个文件系统,会格式化该块空间,如果有内容一定要注意备份.
(mkfs.ext2和mkfs -t是一样的意思)
mke2fs 专门管理ext系列的文件系统
mke2fs /dev/sda5 创建一个ext2文件系统,会格式化该块空间,如果有内容一定要注意备份.
mke2fs -j /dev/sda5 创建一个ext3文件系统(有日志),会格式化该块空间(注意备份)
mke2fs -b BLOCK 指定块大小,默认为4096,可取值是1024,2048,4096
mke2fs -L LABEL 指定分区卷标,有了卷标以后可以用卷标来引用这个分区
mke2fs -m NUM 指定预留给超级用户的块数百分比
mke2fs -i NUM 指定一个inode的字节大小,默认8K(这里说错了吧);这里给出的数值应该是块大小的2^n
倍,inode的个数比块还多是很浪费的,要注意分配
mke2fs -i 4096 指定一个inode的字节大小为4096
mke2fs -N NUM 指定inode的个数
mke2fs -F 强制创建文件系统属性
mke2fs -E 用户指定额外文件系统属性
blkid /dev/sda5 查看/dev/sda5这个设备的属性,UUID是设备的全局的唯一的标识符
blkid 查询或查看磁盘设备的相关属性,如UUID,TYPE(文件系统类型),LABEL卷标
e2lable /dev/sda5 查看文件系统设备的卷标
tune2fs 调整文件系统(无损)
tune2fs -j /dev/sda5 如果以前/dev/sda5是ext2,经过这个命令/dev/sda5会变成ext3,无损(只能升级)
tune2fs -L MYDATA /dev/sda5 将/dev/sda5的卷标干成MYDATA
tune2fs -m NUM 调整预留百分比
tune2fs -r 指定预留块数
tune2fs -o 设定默认挂载选项
tune2fs -c NUM 指定挂载次数在达到#后进行自检,0或-1表示关闭此功能
tune2fs -i NUM 每挂载使用多少天后进行自检,0或-1表示关闭此功能
tune2fs -l /dev/sda5 显示设备/dev/sda5超级块中的信息
注意tune2fs无法改变块大小(除非格式化文件系统,否则无法改变块大小)
dumpe2fs /dev/sda5 显示文件系统相关系统,更详细
dumpe2fs -h /dev/sda5 只显示指定文件系统的超级块信息(高级,free block会有碎片信息)
fsck /dev/sda5 检查并修复文件系统/dev/sda5
[root@localhost test]# df -lh
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 17G 370M 98% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
dumpe2fs /dev/centos/root(找不到有效的文件系统超级块)
fsck 检查并修复Linux文件系统
fsck -t FSTYPE 指定文件系统类型
fsck -a /dev/sda5 不询问自动修复,各种文件系统都可以
e2fsck 专门修复ext系列文件系统
e2fsck -f 强制检查,没问题也检查
e2fsck -a /dev/sda5 不询问自动修复/dev/sda5(假如有错的话)
ftp-vsftpd https://blog.csdn.net/qq_31319235/article/details/106942879
chown root:root ./* 将当前目录下的所有文件的拥有者和组ID都设置成root
9.内存管理相关
cat /proc/slabinfo 查看slab内存信息
dmesg | grep e820 查看e820表的信息
ipcs 检查系统共享内存的分配情况
ipcrm 手动解除系统上共享内存的分配
10.设备驱动相关
mknod /dev/mapnopage c 240 0 创建一个名字为/dev/mapnopage,主设备号是240,次设备号是0的字符设备
lspci |grep VGA 查看显卡使用
lspci -vnn | grep VGA -A 12 详细使用情况
11.网络相关
指定端口范围为4400-4600通过防火墙
firewall-cmd --zone=public --add-port=4400-4600/udp --permanent 运行接口通过
firewall-cmd --reload 重新加载
firewall-cmd --zone=public --remove-port=80/tcp --permanent 关闭指定端口
systemctl start firewalld.service 开启防火墙
systemctl stop firewalld.service 关闭防火墙
service firewalld restart 从启防火墙
firewall-cmd --zone=public --list-ports 查看通过的端口
firewall-cmd --state 查看防火墙状态
netstat -anop | grep 8080 查看8080端口占用情况
curl http://127.0.0.1:8080 -I 请求http://127.0.0.1:8080并返回头部
vim /etc/sysconfig/network-scripts/ifcfg-ens33 编辑网卡配置文件
systemctl restart network network.service 重启网络
tcpdump -i lo port 8080 -A -s 0 抓本地8080端口的包
tcpdump -nn -i ens33 port 6666
lsof -i:80 查看80端口被那个进程占用了 https://www.cnblogs.com/sparkbj/p/7161669.html
route -n 查看路由
vim /etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/resolv.conf
service network restart 重启网络,我的centos7上面的命令,有时候不能上网重启一下就好了
通过PID来查看程序占用的端口
12.vi&vim
1.vim实现排版 在命令模式下(按esc,不需要:)按顺序打出 gg , = ,G可实现排版。
2.vim编辑多个文件 【vim FILE1 FILE2 FILE3】可以同时编辑FILE1 FILE2 FILE3这三个文件
【:next】切换至下一个文件
【:prev】切换至前一个文件
【:last】切换至最后一个文件
【:first】切换至第一个文件
3.垂直分屏(分成左右两个屏幕)
vim一个文件的前提下,切换到命令行,需要:,然后输入vs(或vsplit) filename.
3.水平分屏(分成上下两个屏幕)
vim一个文件的前提下,切换到命令行,需要:,然后输入s(或split) filename.
4.缩小字体 vim打开 ctl+'-'
5.放大字体 vim打开 ctl+shift+'+'
6.显示行号 vim打开 切换到命令行,需要:,输入set nu或者set number
7.不显示行号 vim打开 切换到命令行,需要:,输入set nonu或者set nonumber
8.调到第一行 vim 在命令模式下(不需要:),打出gg
9.调到最后一行 vim 在命令模式下(不需要:),打出G
10.调到第n行 vim 在命令模式下,需要:,打出n
或者不需要:,打出ngg
11.删除5个字符 vim 在命令模式下(不需要:),打出5x
12.全局替换:% s/XXX/YYY/g(命令行模式下,需要加:,用YYY替换所有XXX)
13.vim /etc/vimrc (Centos)加上set number 或者 set nu 之后vim打开任何文件就可以自动加行号了.
vim /etc/vim/vimrc(Ubuntu)
14.Vim快速移动光标至行首和行尾
14.1 需要按行快速移动光标时,可以使用键盘上的编辑键Home,快速将光标移动至当前行的行首。
除此之外,也可以在命令模式中使用快捷键"^"(即Shift+6)或0(数字0)。
14.2如果要快速移动光标至当前行的行尾,可以使用编辑键End。也可以在命令模式中使用快捷
键"$"(Shift+4)。与快捷键"^"和0不同,快捷键"$"前可以加上数字表示移动的行数。例如使
用"1$"表示当前行的行尾,"2$"表示当前行的下一行的行尾。
15.向前搜索查找匹配的内容"N",向后搜索查找匹配的内容"n".
13.gcc&gdb
gcc
1、-pedantic 选项,那么使用了扩展语法的地方将产生相应的警告信息
2、-Wall 使用它能够使GCC产生尽可能多的警告信息
3、-Werror,它要求GCC将所有的警告当成错误进行处理
14.awk,sed,grep
一条命令杀掉查找出的相关进程
查看项目的进程号:
ps -efww | grep 项目名 | grep -v grep | grep -v less | awk '{print $2}'
kill项目:
kill `ps -efww | grep 项目名 | grep -v grep | grep -v less | awk '{print $2}'`
找出ls -lrt结果集合中的第九列
ls -lrt | awk -F ' ' '{ print $9 }'
获得机器中IP地址:
/sbin/ifconfig -a | grep inet | grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d "addrs"