【Linux系统中的命令】

目录

1.终端相关&用户

2.手册的使用

3.搜索

4.系统相关操作

5.系统调用相关

6.进程管理相关

7.文件系统相关 

9.内存管理相关

10.设备驱动相关

11.网络相关 

12.vi&vim

13.gcc&gdb

14.awk,sed,grep 

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".

vim向前和向后匹配关键字

vim分屏的链接

13.gcc&gdb

gcc
1、-pedantic 选项,那么使用了扩展语法的地方将产生相应的警告信息

2、-Wall 使用它能够使GCC产生尽可能多的警告信息

3、-Werror,它要求GCC将所有的警告当成错误进行处理

g++相关参数的参考链接

14.awk,sed,grep 

ref1ref2

一条命令杀掉查找出的相关进程
查看项目的进程号:
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.链接

一个链接

猜你喜欢

转载自blog.csdn.net/Edidaughter/article/details/109332455