目录
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 查看空闲内存
free -g
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的进程有几个线程
lsof -p 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路径下的文件
wc -l * 统计某个路径下的所有文件的行数
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.youkuaiyun.com/qq_31319235/article/details/106942879
chown root:root ./* 将当前目录下的所有文件的拥有者和组ID都设置成root
scp /etc/profile root@192.168.244.142:/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端口占用情况
netstat -s 显示每种协议的统计信息
netstat -r 显示内核路由表
netstat -g 显示IPv4和IPv6的IGMP组播组成员关系信息
netstat (none)
无选项时, netstat 显示打开的套接字. 如果不指定任何地址族,那么打印出所有已配置地址族的有
效套接字.
netstat -i 显示所有网络接口列表或者是指定的iface
netstat -M 显示一份所有经伪装的会话列表
netstat --timers 包含与网络定时器有关的信息
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上面的命令,有时候不能上网重启一下就好了
ss (ss - another utility to investigate sockets ,please man ss, ss is used to dump socket
statistics. It allows showing information similar to netstat. It can display more TCP and
state informations than other tools.)
通过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"
15.链接
16.文件查看
Linux 命令中 more,less,head,tail 命令的用法
17.find
find / -type f -size +1G 大文件查找