Linux常用命令【总结】

 快速到Linux命令表格   编辑本文

dos常用命令【总结】

Linux理论小结https://www.cnblogs.com/andy9468/p/11835475.html

网友总结查看Linux系统命令:https://zhousiwei.gitee.io/2018/03/17/Linux%E6%9F%A5%E7%9C%8B%E7%A1%AC%E4%BB%B6%E4%BF%A1%E6%81%AF/#more

Linux 环境下/etc/profile和/etc/profile.d 的区别:https://www.cnblogs.com/kevin1990/p/8641315.html

https://www.cnblogs.com/zhaojingyu/p/9008877.html

Linux命令中文版详解:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/index.html

Linux系统,我用过的有centos和Ubuntu两种,但是我不打算分开总结,因为这两种Linux系统有80%的命令都相同的。

查看centos系统属性:
1、查看centos系统版本:cat /etc/redhat-release
2、查看centos内核版本:uname -r

Linux通用:cat  /etc/os-release
1、显示的是发行版本信息: cat /etc/issue
2、显示操内核版本、gcc版本、系统厂家: cat /proc/version
3、查看系统是32位还是64位: getconf LONG_BIT

添加定时任务:https://blog.csdn.net/errors_in_life/article/details/72778816

centos7限制访问ip:http://www.cnblogs.com/emanlee/p/10343542.html

更多centos的命令:https://www.cnblogs.com/wangkongming/p/4531341.html

用户和用户组管理:https://www.cnblogs.com/xiohao/p/5877256.html

cat /etc/protocols     # 协议号表。如ip协议号用0表示,udp协议号用17表示。

cat /etc/services      # 端口号表。

参考:https://www.cnblogs.com/andy9468/p/10551132.html

/etc/passwd    记录Linux账号

/etc/shadow    记录Linux账号的密码

/etc/group      记录Linux中的所有群组

Linux文件属性:https://www.cnblogs.com/andy9468/p/11170743.html 

自动化工具:centos中安装expect

yum install expect -y 

centos7根目录扩容

https://www.cnblogs.com/andy9468/p/11041619.html

修改ssh的22端口

https://www.cnblogs.com/andy9468/p/11234515.html

防火墙服务:firewalld、iptables

https://www.cnblogs.com/andy9468/p/10419938.html

Linux记录history

https://www.cnblogs.com/andy9468/p/11571224.html

鸟哥笔记-专题一:Linux文件的权限rwx、特殊权限sst、隐藏权限ia

https://www.cnblogs.com/andy9468/p/12448760.html 

centos7查询命令小结

https://www.cnblogs.com/ZeroSunny/p/12667080.html

Linux装B命令

 我是Linux命令表格锚点

延伸:dos常用命令【总结】

命令 作用 其他
ll 查看文件  

ll -t
-a # 显示隐藏文件(夹)
-t # 按时间排序
-r # 对目录反向排序
-S # 按文件大小排序
-X # 按扩展名排序(最后一个.后的字符)
--full-time # 显示完整时间
-i # 显示文件编号inode,如:32983542
# 重命名编号为32983542的文件为test.php。{}代表原文件。
find . -inum 32983542 -exec mv {} test.php ;

pwd 查看路径  
basename 获取文件名称 basename  /etc/sysconfig/network
输出:network
dirname 获取文件路径 dirname  /etc/sysconfig/network
输出:/etc/sysconfig
cd 切换路径   
touch 新建文件   
mkdir 新建目录   -p 创建多层目录
mv  移动、重命名  
rm 删除文件、文件夹 不可恢复,慎用
whereis 查看几个特定路径下的文件(二进制) 如:whereis   ls

whereis 到底查了多少目录
whereis -l # 查看所有特定目录的路径

locate 通过数据库查找文件 如:locate   safedog
如果没有locate,需安装:yum install mlocate
locate  -S 查看数据库中记录的文件数量  
updatedb 手动更新locate数据库数据 locate的数据库每天只自动更新一次,如果要及时查询,需要更新数据库。
find 搜索文件 

* 号匹配0个或多个字符。

?号匹配一个字符。

有通配符*、?号时,必须引号包裹起来。

find / -name "1*.txt"

忽略大小写

find ./ -iname china*

find高级用法0 搜索文件

-atime  n   搜索在过去n天读取过的文件。

-ctime  n   搜索在过去n天修改过的文件。

-size  n    搜索文件大小是n的文件。如find / -size +100c 搜索文件大小为100b(字节)以上的文件。字节c、千字节k、兆字节M、吉字节G。+大于、-小于。

-user x   搜索属于x用户的文件。

-and    搜索添加并列。如find / -size +100c -and -user cao 搜索文件大小为100b以上,并且属于cao用户的文件

-maxdepth  2  只搜索2级深度内的文件

find高级用法1 搜索文件: 按照修改时间

-mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。

find / -mtime 0

每24h为一个时间段,查找最近的第1个时间段修改过的文件。那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,有变动过内容的文件都会被列出来!

find / -mtime 3

三天前的 24 小时内有变动过的文件都被列出。查找最近的第4个24时间段修改过的文件。

find / -mtime 0 | grep -v -E "^/dev"|grep -v -E "^/proc" |grep -v -E "^/sys" |grep -v -E "^/run" |grep -v -E "^/boot" |grep -v -E "^/etc/rc.d"|grep -v -E "^/var/cache"|grep -v -E "^/var/log" |grep -v -E "^/var/lib" |grep -v -E "^/tmp" |grep -v -E "^/var/spool" |grep -v -E "^/var/tmp" |grep -v -E "^/usr/lib" |grep -v -E "^/usr/share" > 1.txt

24小时内,有变动的文件列出来(排除系统修改的一些文件)

find高级用法2  搜索文件: 按照大小

find /etc -size +50k -a -size -60k -exec ls -lh {} ;
找出/etc下面,文件大小介于50K到60K之间的文件,并列出。

cat 查看小文件内容 带行号: cat -n
more 查看大文件内容   enter下一行,空格下一页,q退出
less 查看大文件内容-加强版 带行号:less -N 1.txt
G:跳转到最后一行
g:跳转到第一行
/:开启字符穿搜索
pgup键:上一页
空格:下一页
q:退出
tail 查看文件内容后面的部分 

查看文件内容的后20行
tail -20 1.txt
动态查看文件
tail -f 1.txt

head 查看文件内容的前面部分

查看文件内容的前10行
head -10 2.txt

 od 查看二进制文件 

od -t dCoCc /etc/issue # 查看二进制文件
dC:第一行以十进制显示
oC:第二行以8进制显示
c:第三行以ASCII码显示

echo abc |od -t dCoCc  # 查看字母abc对应的ASCII码对照表

| 管道,配合其他命令使用,如grep  
grep 文本内容查找
-n  显示匹配行及行号
-v  显示不包含匹配文本的所有行(相当于求反)反转
-i  忽略大小写
ps  -ajx  | grep  -i  httpd
which 查看命令位置  凡是which查不到的命令,都是内建命令。
whereis 查看命令位置和安装包位置  
type 查看命令类型:内建命令、关键字、别名 type cd
alias 查看系统中有哪些别名命令

用户自定义别名命令

vim /etc/profile

末尾追加

alias  ll.='ls -lha'

重启配置

source  /etc/profile

source

source 在当前shell环境执行。

sh 或者 .号空格 在当前shell的子shell中执行。

运行可执行文件:如,使全局配置文件重新立即生效

source  /etc/profile

执行配置,使之立刻生效。

正常情况下,脚本中执行的参数设置只能影响到shell脚本本身的执行环境,不能影响到调用此shell的脚本。 使用source命令执行脚本,可以让脚本影响到父shell的环境(即调用此shell的当前shell)。

source 运行可执行文件(当前父shell执行)  
.空  或者sh 运行可执行文件(创建子shell执行)  
  配置文件作用范围

source /etc/profile        # 配置应用于所有用户,永久
source /etc/bashrc        # 配置应用于所有用户,永久

source ~/.bashrc         # 配置应用于当前用户,永久

export xx=111            # 配置应用于当前登录,临时

 file  

探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。

file Temp.txt

ping 检查连通性 (基于icmp协议,3层协议)  
wget

下载网站文件 

下载文件
wget url
下载全站
wget -m url

单页下载:wget http://www.baidu.com/

全站下载:wget -r -p -np -k http://www.baidu.com/ 

递归下载:
-r, --recursive 指定递归下载。-m选择本域名下的下载,友情链接不下载。
-k, --convert-links 让下载得到的 HTML 或 CSS 中的链接指向本地文件。
-p, --page-requisites 下载所有用于显示 HTML 页面的图片之类的元素。
-l, --level=NUMBER 最大递归深度 (inf 或 0 代表无限制,即全部下载)。

递归接受/拒绝:
-np, --no-parent 不追溯至父目录。

不验证证书:
--no-check-certificate

tcpdump

抓包命令

1、类型的关键字,包括host,net,port。
2、传输方向的关键字,包括src,dst,dst or src,dst and src。
3、协议的关键字,包括ip,ip6,arp,rarp,tcp,udp。

在Linux上抓包:tcpdump tcp  -i any -s0 -w desk.cap

参数说明

-i any  指定网卡为所有(不推荐)

-i eno16777984 抓指定网卡中的数据包,ifconfig可查网卡(强烈推荐)

如:tcpdump -i eno16777984 -w desk.cap

-s0 防止包被截断

-w desk.cap 将抓到的包写入文件desk.cap

curl  -k 打印返回的html。访问https,不验证证书有效性。

curl -k https://xxxx

curl -I www.baidu.com 查看http协议的请求头报文  
curl icanhazip.com 查看公网ip

联网状态下使用:

curl icanhazip.com

tar 压缩、解压 

(一)压缩
1、打包
tar -cvf web.tar web/
或者
tar -cvf 1.txt.tar 1.txt
2、打包并压缩(gz格式-z,bz2格式-j):
tar -zcvf web.tar.gz web/
或者
tar -zcvf 1.txt.tar.gz 1.txt

(二)解压:
tar -zxvf 1.tar.gz
解压到指定位置:
tar -zxvf 1.tar.gz -C ~/Desktop

   解压小结

1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压

unzip 解压zip后缀的压缩包

unzip  1.zip

防止unzip解压出现中文乱码
unzip -O CP936 xxx.zip

vi 编辑器 

:q! 不保存退出,或者ZQ。:wq保存退出,或者ZZ,或者:x。

:e! 不保存退出并重新打开。

:set nu  显示行号

:set nonu   取消行号

永久显示行号:

① vim /etc/vimrc      (ubuntu是  vim  /etc/vim/vimrc)

② 在文件的末行追加   set nu

③ZZ保存 /etc/vimrc的修改

vim高级  

(一)命令模式:ESC进入
GG:光标移动到最后。1G、gg均是移动到最前。12G移动到12行
ZZ:保存退出。ZQ:不保存退出。
dd:删除一行。30dd删除30行。
yy:复制一行。p黏贴。
V:选中一行。配合方向键用。
/str:查找str关键字。n下一个,N上一个。

(二)插入模式:i进入
小o:向下开辟新行。
大O:向上开辟新行。

(三)末行模式
:set nu   设置行号。  :set nonu  取消行号。
:e!  不保存重新打开。
:q!  不保存退出,相当于ZQ。
:wq  保存退出,相当于ZZ。
:%s/old/123   将old替换为123,一处。
:%s/old/123/g  将old替换为123,全部。
:1,10s/old/123/g  将old替换为123,范围第1到10行。
:noh 取消上一次的因搜索、替换引起的高亮。

cp 复制 

 cp 1.txt 11.txt 复制文件

 cp -r web1 web11 复制文件夹

-a -p 

-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用)

scp 远程复制  远程下载:scp python@10.1.2.66:Desktop/1.txt  ./
ssh 远程连接控制  ssh python@10.1.2.66
ssh  -v  你的ip 查看连接过程 ssh -v  10.1.2.66      或者  ssh -v  python@10.1.2.66 
     
Redhat红帽系列 Redhat、Centos、Fedora 软件管理:1、源码安装。2、rpm包安装。3、yum源安装。
  源码安装  自定义、源码安装软件统一安装在:/usr/local下,方便管理。

1、配置安装路径
./configure --prefix=/usr/local/https/
2、编译,生成可执行的二进制文件Makefile
make
3、安装。此时,软件安装在 /usr/local/https/ 目录下
make install

rpm rpm包安装

centos中使用。

查看Redhat中的软件安装列表:rpm -aq

安装:i安装,v显示安装过程,h以‘#’显示安装进度。
rpm -ivh 包.rpm
卸载:移除指定的rpm包
rpm -e 包的名称

yum yum源安装,在rpm基础上发展出来的 centos中使用。
yum list installed   # 查看yum安装过的软件列表
yum list    #  查看所有软件的列表
yum install httpd -y  # yum方式安装软件
yum remove httpd -y  # yum方式卸载软件
Debian蛋黄派系 Kali、Ubuntu等 软件管理:1、Deb包安装。2、apt-get源安装。
dpkg Deb包安装

Ubuntu中使用。

查看Ubuntu中的软件安装列表:dpkg -l

apt apt-get源安装,新版 Ubuntu中使用。

sudo apt-get install package  安装包 
sudo apt-get remove package  删除包 

apt-get  apt-get源安装,旧版 Ubuntu中使用。
dpkg -i XXX.deb Ubuntu中*.deb软件安装 sudo dpkg -i XXX.deb
apt-get -f install Ubuntu中解决安装依赖

1、执行命令 sudo dpkg -i XXX.deb 返回依赖关系错误提示
2、执行 sudo apt-get -f install 这条命令将自动安装需要的依赖包.
3、再次执行命令 sudo dpkg -i XXX.deb 安装成功

sudo 临时切换root用户5分钟

临时切换到超级管理员

centos7中将lisi用户加入sudo组的方法:
usermod -G wheel lisi

su 切换用户   su -  # 切换到超级管理员,并cd到家目录
 su - list  # 切换到李四用户,并cd到lisi的家目录
ifconfig 查看Linux的ip地址(安装命令)  
ip addr 查看Linux的ip地址(自有命令)  
chkconfig 旧指令(centos6、5)
开启自启控制

旧指令(centos6、5)
显示所有已启动的服务
chkconfig --list
使httpd服务自动启动
chkconfig --level 3 httpd on
使httpd服务不自动启动
chkconfig --level 3 httpd off

service 旧指令(centos6、5)
服务管理(启动和关闭) 
 

旧指令(centos6、5)
检查服务状态
service httpd status
启动某服务
service httpd start
停止某服务
service httpd stop
重启某服务
service httpd restart

systemctl  systemctl 是系统服务管理器命令,它实际上将 service 和 chkconfig 这两个命令组合到一起。在CentOS 7就开始被使用了。

新指令(centos7)
显示所有已启动的服务
systemctl list-units --type=service
使某服务自动启动
systemctl enable httpd.service
使某服务不自动启动
systemctl disable httpd.service

检查服务状态
systemctl status httpd.service (服务详细信息)
systemctl is-active httpd.service (仅显示是否 Active)
启动某服务
systemctl start httpd.service
停止某服务
systemctl stop httpd.service
重启某服务
systemctl restart httpd.service

     
useradd 新建用户  useradd -m lisi
passwd 修改密码,当前用户的或者指定用户 passwd lisi 
userdel 删除用户 userdel -r lisi
     
groupadd 添加用户组 

创建用户组myproject
groupadd myproject

创建用户组myweb,其GID为888:
groupadd -g 888 myweb

groupdel 删除用户组 删除用户组myweb:groupdel myweb
groupmod 修改用户组名称 把用户组更名为web:groupmod -n newweb myweb
groups 查看当前用户所属组  
id 查看当前用户所属组,详细  
usermod 用户拉入组

把lisi拉到sudo组中:
Ubuntu中:
usermod -a -G sudo lisi
centos中,wheel就是sudo组:
usermod -G wheel lisi

gpasswd 用户移除组 把lisi移除sudo组:gpasswd -d lisi sudo
     
chmod 修改文件(夹) 权限 去掉1.py的读r权限
chmod -r 1.txt

对abc.py文件的用户(u)添加可执行(x)权限
chmod u+x abc.py (u 拥有者、g 用户组、o 其他人)

将 test 目录以及目录下的所有文件权限修改为 u=rwx,g=rwx,o=rx
chmod -R 776 test

chown

修改文件所属用户和用户组

需要sudo给权限

把aaa.txt文件的用户和用户组修改为lisi用户和myweb组了。(强烈推荐)
chown lisi.myweb aaa.txt
或者
chown -R lisi:myweb aaa.txt

只修改所属组可以用
chgrp myweb aaa.txt

chatter 锁定文件,不能删除,不能更改

半加锁:chattr +a /root/tmp/1.txt 只能给文件追加内容,但是删除不了
全加锁:chattr +i /root/tmp/1.txt 文件不能删除,不能更改,不能移动
解锁:chattr -i /root/tmp/1.txt - 表示解除

隐藏chattr命令:
which chattr
mv /usr/bin/chattr /opt/ftl/h -->移动命令,更改命令名称,使用别名h隐藏身份
/opt/ftl/h +i /root/tmp/1.txt -->利用h 行使chattr命令

lsattr 查看加锁信息 查看加锁信息: lsattr /root/tmp/1.txt 文件加了一个参数 i 表示锁定
     
who 查看当前所有登录用户,抓黑客的   
whoami 查看当前的用户名   
last 查看用户登录日志  last
lastb 查看登录失败的日志  lastb
lastlog 查看可登陆的用户和最近登录  lastlog
     
date 显示服务器日期   
cal 显示当月日历  cal -y
timedatectl 查看时区,查看时间各种状态 更多
ps 查看进程信息(PID、名称等)  ps -ef

-e :所有的进程均显示出来,与 -A 具有同样的效用;
-f :做一个更为完整的输出。

ps 进程号 查看进程详情 ps 17996  查看进程17996的详情
pwdx   进程号 查看进程ID启动时的目录 pwdx    22551
ls -la  /proc/进程号 查看进程文件夹位置 详见  ls -la  /proc/22551   # 观察exe后面软连接指向

ps -eo pid,lstart,etime

|grep 37275

查看启动时间和运行时长

#lstart 启动时间
#etime 运行时间
#PID 为37275

37275 Sat Apr 6 15:04:51 2019 01:14:33

37275表示进程PID
Sat Apr 6 15:04:51 2019 表示启动时间
01:14:33 表示运行持续时间

ps -p PID -eo lstart 查看进程启动时间

ps -p 1929 -eo lstart  查看进程PID为1929的进程启动的时间
后面是L字母

ps -aux 查看进程启动时间 ps -aux | grep python  查看Python进程的启动时间
ps -ef | grep ssh 查询所有ssh连接  
tty 查询当前ssh连接的终端编号 Linux下的tty和pts详解
top

动态查看进程,

也可以查看内存和cpu格式(顶部信息)

x高亮

<高亮向左移动

>高亮向右移动

q退出

其他:顶部看内存、1数字键看cpu个数

top -p 123456

查看进程号123456的cpu、内存使用情况

 
htop

高级top,需要另外安装htop

可以鼠标点击界面。

F1 : 查看htop使用说明
F2 : 设置
F3 : 搜索进程
F4 : 过滤器,按关键字搜索
F5 : 显示树形结构
F6 : 选择排序方式
F7 : 减少nice值,这样就可以提高对应进程的优先级
F8 : 增加nice值,这样可以降低对应进程的优先级
F9 : 杀掉选中的进程
F10 : 退出htop。或者q

/ : 搜索字符
h : 显示帮助
l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
u :显示所有用户,并可以选择某一特定用户的进程
s : 将调用strace追踪进程的系统调用
t : 显示树形结构

H :显示/隐藏用户线程
I :倒转排序顺序
K :显示/隐藏内核线程
M :按内存占用排序
P :按CPU排序
T :按运行时间排序

kill 杀死进程

1.强制杀死进程:
kill  -9  xxxx

2.暂停进程:等效于Ctrl+z
kill -STOP 9394
9394为需要暂停的进程号

3.恢复进程:等效于fg命令
kill -CONT 9394

netstat 查看使用中的所有套接字端口号  netstat -antp |grep :
lsof 查看端口号是否被占用 lsof -i:27017
netstat -lnp 查看80端口的进程号

netstat -lnp |grep 80     查看80端口的进程号

ps 17996     查看进程17996的详情

ln 建立软、硬连接  软连接:ln -s /1.txt  /1_soft.txt
history 查看历史命令   
df 查看磁盘各个分区的容量情况,disk free的缩写 df -h
du 查看当前文件大小 查看当前文件总大小:du -hs
查看当前目录下子目录分别大小:du -sh *
查看当前目录中所有子目录、子文件的分别大小:du  -h
lsblk  查看磁盘总大小 lsblk  -m,将主要磁盘大小相加,即为总大小。
     
echo 输出显示

 输出环境变量的值

echo  $PATH

env 查看所有环境变量  
set | grep HIST 查看变量名中带有HIST的所有变量名和值

会列出所有相关的变量名和值

export 修改环境变量

为python的nohup.out日志关闭缓存机制,实时写入日志到nohup.out

 export PYTHONUNBUFFERED=1

  补充环境变量

PATH="${PATH}:/root"

     
shutdown 关机、重启 

关机: shutdown now

重启:shutdown -r now

reboot 重启  
nohup 开启后台运行   nohup  python3  run.py
rz

 上传文件到Linux系统

rz和sz的传输时加密的,可抓包验证

sz rz命令
安装命令:
yum install lrzsz
从服务端发送文件到客户端:
sz filename
从客户端上传文件到服务端:
rz

lynx http://192.168.2.1:49180 一个通用的文字版浏览器,Linux系统上使用

安装命令:yum install lynx (centos系统版本)

-exec  find命令与其连用,进一步处理结果。

方法一:使用exec语法

找出当前目录中同一类型的文件,并把这类文件删除

find . -name "*.pyc" -exec rm -rf  {} ;

-exec 参数后面跟的是 command 命令,它的终止是以“;”为结束标志的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。

{} 花括号代表前面find查找出来的文件名

https://www.cnblogs.com/aaronax/p/5618024.html

方法二:使用变量和rm

排除2.json,找出当前目录下的其他*.json,不进入子目录查找。把找到的文件删除。外围引号为1键前一个键。

xx=`find . ! -name "2.json" -name "*.json" -maxdepth 1`;
echo $xx
rm -f $xx

处理乱码文件:https://www.cnblogs.com/andy9468/p/8675901.html

split 分割文件

把文件分割为1M大小的文件:

split -b 1m 2.txt prefix_

结果得到prefix_aa、prefix_ab

-b 按照大小分割文件

-l  按照行数分割文件

分割合并文件参考

openssl 证书操作

查看*.crt证书内容
openssl x509 -in server.crt -noout -text

 locale 查看Linux语言格式

locale 命令是将有关当前语言环境或全部公共语言环境的信息写到标准输出上
查语言版本      echo $LANG 
修改系统语系   export LC_ALL=en_US.utf8

     
nginx nginx操作

启动
nginx

停止
nginx -s stop

原文地址:https://www.cnblogs.com/andy9468/p/8568610.html