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


1、查看内核版本
cat /proc/version
uname -a
uname -r

2、查看linux版本信息
lsb_release -a
cat /etc/issue

3、查看linux是64为还是32位
getconf LONG_BIT
file /bin/ls

4、直接查看系统的架构

四大主流芯片架构(X86、ARM、RISC-V、MIPS),RISC-V可能是未来的主流。
x86(性能好)是PC和服务器的主流,x86_64就是amd64和x86系列,都是x86架构。品牌包括奔腾pentinum、酷睿core、锐龙Ryzen
ARM(功耗低)是移动设备的主流,许多巨头纷纷开始自研ARM架构的服务器芯片,包括国外的亚马逊,google,Micro,国内的腾讯,alibaba,huawei等等都积极参与其中。


关于CPU架构是x86、x86_64、amd64都是x86架构。

查询架构:

方式一:arch

x86_64就是amd64,属于x86架构。

方式二:rpm -qi centos-release

方式三:yum install -y dpkg
dpkg --print-architecture

方式四:file /lib/systemd/systemd

 

 

添加定时任务: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 \;

ls 统计当前文件夹中的文件数量,含隐藏文件 ls -A | wc -l
tree 查看目录结构

tree

tree -N   # 中文显示出来

tree -L 1    # 只显示1级文件和目录

tree --du -h   # 树状结构列出文件,并显示文件大小

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 # 查看所有特定目录的路径

uname 查看系统型号、版本

查看系统类型(如:Linux)
uname -s

查看系统位数(如:x86_64表示64位)
uname -m

查看系统内核版本(如:3.10.0-1127.13.1.el7.x86_64表示内核版本3.10.0)
uname -r

 

查看CPU信息

查看CPU详细信息
cat /proc/cpuinfo

查看物理CPU数量
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

查看逻辑cpu数量(=单个物理cpu核心数×物理CPU个数=逻辑总核心数=总线程数)
cat /proc/cpuinfo |grep "processor"|wc -l

 

 

查看内存信息

查看内存。-g、-m是内存单位。
free -g

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

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

?号匹配一个字符。

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

find / -name "1*.txt"

忽略大小写

find ./ -iname china*

指定查找类型:

只查找文件:find ./ -type f -name "*.txt"

只查找目录:find ./ -type d -name "day_*"

find高级用法0 搜索文件

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

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

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

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

-group y 搜索属于y用户组的文件。

-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-时间 (意外解压)移动刚解压的文件

查找当前目录下,最近24小时内新建的文件:

find . -ctime 0

批量移动文件到/root/test01/:

find . -ctime 0 -exec mv {} /root/test01/ \;

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

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

cat 查看小文件内容 带行号: cat -n

cat高级用法

写入内容涉及变量${xx}时,会无法导入。

解决方法:分解符eof外加上单引号。

cat当作vim使用

cat  > 1.txt <<eof

1

2

3

eof

就是创建1.txt这个文件里面内容是 1 2 3

 

cat  >>/etc/profile  <<'eof'

export PATH=$JAVA_HOME/bin:$PATH

eof

文件/etc/profile中追加写入含有变量的内容。此时分界符外加单引号"

 

cat  <<'eof'

tips:

    this is a tips.

eof

只到标准输出显示

more 查看大文件内容   enter下一行,空格下一页,q退出
less

查看大文件内容-加强版

原理:增量读取大文件中的数据,效果就是可以很快查看到大文件中的数据

用法:

less 1.log

less -N 2.log

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

查看文件内容的后20行

tail -n 20 1.txt

简写:tail -20 1.txt


动态查看文件
tail -f 1.txt

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

查看文件内容的前10行

head -n 10 2.txt

简写: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
grep -r 递归查询文件中是否存在指定内存
grep  -r  "phpinfo"
grep -v  排除某些行
grep -v ^# 1.txt         排除#号开头的行。即查看有效配置
grep 查看有效配置

①针对没有缩进的
grep '^[a-z]' a.conf

②针对有缩进的
grep '^\s*[a-z]' nginx.conf

tee tee既能重定向写入文件,又能打印输出

记录ping包
1、tee既能重定向,又能打印输出
追加写入
ping -c4 baidu.com |tee -a test.txt
追加写入
ping -c4 baidu.com |tee test.txt

2、>> 重定向,只能重定向写入,不能打印输出
追加写入
ping -c4 baidu.com >> test.txt
覆盖写入
ping -c4 baidu.com > test.txt

script shell终端投影到其他shell终端

打开2个shell终端

在第一个shell终端中w命令查询第二个终端的标识符为: pts/1

则将第一个终端的操作投影到第二个终端上去:

script /dev/null | tee /dev/pts/1

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            # 配置应用于当前登录,临时

chsh -l 查看不同类型的bash

/sbin/nologin案例解析

 chsh -s /sbin/nologin test  修改用户的bash类型  test修改为nologin后,就不可以登录服务器了。
 file  

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

file Temp.txt

ldd

ldd是list, dynamic, dependencies的缩写, 意思是, 列出动态库依赖关系。

ldd nginx

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

 linux中,ping5次
ping  127.0.0.1  -c  5

windows中,ping无限次
ping  127.0.0.1  -t

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
https://blog.csdn.net/mao_xiaoxi/article/details/97764814
-s是沉默,静默模式,意思为不输出进度表或错误信息。
-o 参数,把这个网页保存下来
-L 参数,curl 就会跳转到新的网址。 curl -L www.sina.com
-i 参数可以显示 http response 的头信息,连同网页代码一起。
-I 参数则只显示 http response 的头信息。
--socks5 使用socks5代理

curl icanhazip.com 查看公网ip

联网状态下使用:

curl icanhazip.com

curl cip.cc 查看公网ip(运营商信息)

联网状态下使用:

curl cip.cc

输出本机的公网IP信息:

IP : 12.24.5.3
地址 : 中国 中国

数据二 : 广东省广州市 | 腾讯云

数据三 : 中国广东广州 | 电信

URL : http://www.cip.cc/12.24.5.3

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
3、排除一些目录(site/data),打包压缩
tar -zcvf site.tgz site --exclude=site/data

tar -zcvf fd.tar.gz pardir --exclude=pardir/file1 --exclude=pardir/dir1

(二)解压:
tar -zxvf 1.tar.gz
解压到指定位置:
tar -zxvf 1.tar.gz -C ~/Desktop
解压是去掉2层顶级目录
tar -zxvf /python3.tgz -C ~/test/ --strip-components=2

   解压小结

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 解压

-z,--gzip:使用gzip工具(解)压缩,后缀一般为.gz
-c,--create:tar打包,后缀一般为.tar
-x,--extract:解包命令,与-c对应
-v:(解)压缩过程显示文件处理过程,常用但不建议对大型文件使用
-f,--file=:打包或压缩后得到的文件名
-P:保留绝对路径,解压时同样会自动解压到绝对路径下
使用--strip-components 1,指定去除目录结构,解压时去掉顶层目录
常见组合:
tar -zcvf
tar -zxvf

tar zcPf
tar zxPf

unzip 解压zip后缀的压缩包

unzip  1.zip

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

 gunzip  解压gz

gunzip 2.gz

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行。
打开文件时,定位到第65行:vim  1.txt  +65
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 取消上一次的因搜索、替换引起的高亮。

vimdiff  对比不同和差异

vimdiff  1.txt  2.txt

退出和vim相同,vimdff需要操作2次退出。

cp 复制 

 cp 1.txt 11.txt 复制文件

 cp -r web1 web11 复制文件夹

-a -p 

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

scp 远程复制 

远程下载:scp python@10.1.2.66:Desktop/1.txt  ./

文件夹远程下载:scp  -r  user@remote:Desktop   .

加上 -r 选项可以传送文件夹
把远程家目录下的Desktop复制到当前目录下,名称仍然是Desktop文件夹

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 provides zabbix-agent # 查看yum源中可用的包


yum list installed # 查看yum安装过的软件列表
yum list # 查看所有软件的列表
yum install httpd -y # yum方式安装软件
yum remove httpd -y # yum方式卸载软件

yum history # 查看yum操作历史。安装和卸载
yum repolist # 查看镜像源名称和可获取安装包数量
延伸:https://www.likecs.com/show-312282.html

只下载,再离线安装:

yum install --downloadonly --downloaddir=/root/tmp1/ htop
yum reinstall --downloadonly --downloaddir=/root/tmp1/ htop


yum localinstall htop-2.2.0-3.el7.x86_64.rpm

 

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的家目录
nmcli device show 查看Linux的网卡:ip、mac、路由  
ifconfig 查看Linux的ip地址(安装命令)  
ip addr 查看Linux的ip地址(自有命令)  
route  -n 查看路由表(UG表示网关)  

centos操作路由表
1、查看路由
route -n
或者
ip route show

2、添加路由
ip route add 172.16.1.0/24 via 172.16.10.2 dev eth0

3、删除路由
ip route del 172.16.1.0/24 dev eth0

traceroute www.baidu.com 路由跟踪

yum install -y traceroute

traceroute www.baidu.com

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
  高级用法

1、创建redis用户组
groupadd redis

2、添加一个不能远程登录的用户
useradd -d /usr/local/redis -g redis -s /bin/false redis

-d<登入目录>  指定用户登入时的起始目录。
-g<群组>  指定用户所属的群组。
-s<shell>   指定用户登入后所使用的shell。
要拒绝系统用户登录,可以将其 shell 设置为 /usr/sbin/nologin 或者 /bin/false。
/usr/sbin/nologin nologin 会礼貌的向用户显示一条信息,并拒绝用户登录:This account is currently not available.
/bin/false 用户会无法登录,并且不会有任何提示。
如果是ftp的 /etc/nologin 文件,则系统只允许 root 用户登录,其他用户全部被拒绝登录,并向他们显示 /etc/nologin 文件的内容

 

passwd 修改密码,当前用户的或者指定用户 passwd lisi 
userdel 删除用户 userdel -r lisi
chage 设置密码过期时间

chage -l tyyteledb

chage -M 99999 tyyteledb   # 设置密码永不过期

chage -l tyyteledb

     
groupadd 添加用户组 

创建用户组myproject
groupadd myproject

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

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

id

 其他:

查看全部用户
vim /etc/passwd

查看用户信息、组信息
id zabbix

查看用户的userID
id zabbix -u

查看用户的组id
id zabbix -g

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

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

半加锁: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 查看时区,查看时间各种状态

更多

修改为24小时

https://www.jianshu.com/p/0ee7aada1855

ps 查看进程信息(PID、名称等)  ps -ef

-e :所有的进程均显示出来,与 -A 具有同样的效用;
-f :做一个更为完整的输出。
e:没有短横线。列出程序时,显示每个程序所使用的环境变量
x:显示所有程序,不以终端机来区分
u:以用户为主的格式来显示程序状况

pgrep 查看xx的所有进程清单

经常要查看进程的信息,包括进程的是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。pgrep通过匹配其程序名,找到匹配的进程

-l 同时显示进程名和PID
-o 当匹配多个进程时,显示进程号最小的那个
-n 当匹配多个进程时,显示进程号最大的那个
注:进程号越大,并不一定意味着进程的启动时间越晚

ps 进程号 查看进程详情 ps 17996  查看进程17996的详情
pwdx   进程号(推荐) 查看进程文件夹位置(启动目录)+pid pwdx    22551
ls -la  /proc/进程号 查看进程文件夹位置+解释器 详见  ls -la  /proc/22551   # 观察exe后面软连接指向
 ps e -p 进程号
-o pid,user,cmd
 查看进程文件夹位置+环境变量

ps e -p 8903 -o pid,user,cmd

# 或者直接查看 进程的启动目录。查看程序的启动目录,程序来源。
ps e -p 8903 -o pid,user,cmd | tail -1 | xargs -n1 | grep PWD

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连接  
ps 查询资源占用情况 查询进程的内存、CPU

1、查看占用内存最多的十个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head -10

2、查看占用 cpu 最多的十个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head -10

strace 底层工具、运维工具:查询系统调用

启动前:strace -o output.txt -tt -T -f  ./some_server ../conf/some_server.conf

启动后:strace -o output.txt -tt -T -f -p 12345

参考:https://www.cnblogs.com/machangwei-8/p/10388883.html

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 :按运行时间排序

 lshw

 list hardware

列出硬件信息

# 导出全部硬件信息
lshw -html >info.html

# 查看内存硬件信息:生产日期、物理大小
lshw -C memory

# 查看cpu硬件信息:品牌、频率
lshw -C cpu             # 安装yum install -y lshw

lscpu

kill 杀死进程

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

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

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

4、批量杀死xxxxx进程

ps -ef | grep xxxxx | grep -v grep | awk '{print $2}' |xargs kill -9

nc

yum install -y nc

启动一个本地端口

nc -lk 11223

 

简单聊天

# 在 nodeA 上:
nc -lk 1234

# 在 nodeB 上:
nc 192.168.1.2 1234

# 这样,双方就可以相互交流了。 使用ctrl+C(或D)退出

win7上:

telnet 192.168.1.89 11223

netstat 查看使用中的所有套接字端口号 

netstat -antp |grep :

只查看udp的端口:
netstat -nulp | grep :

只查看tcp的端口:tcp+tcp6
netstat -ntlp | grep :

lsof 查看端口号是否被占用 lsof -i:27017
  查看隐藏占用的文件

lsof /data | grep delete

删除隐藏占用的文件

lsof /data | grep delete | awk '{print $2}' |xargs kill -9

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

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

ps 17996     查看进程17996的详情

ln 建立软、硬连接 

软连接:ln -s /1.txt  /1_soft.txt

  删除软连接

rm -rf /1_soft

注意:软连接文件夹后面不能有斜杠,否则会删除所指向的文件

重要示例:

正确的删除方式(删除软链接,但不删除实际数据)
rm -rf ./test_chk_ln

错误的删除方式
rm -rf ./test_chk_ln/ (软链接没有删除,但是test_chk下的实际内容数据被删除了)

history 查看历史命令   
df 查看磁盘各个分区的容量情况,disk free的缩写 df -h
du 查看当前文件大小

查看当前文件总大小:du -hs
查看当前目录下子目录分别大小:du -sh *
查看当前目录中所有子目录、子文件的分别大小:du  -h

查看文件大小,并由大到小排序:
du -s * | sort -nr

lsblk  查看磁盘总大小 lsblk  -m,将主要磁盘大小相加,即为总大小。
blkid 查看磁盘UUID和文件系统格式 blkid
     
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

 

ldd是list, dynamic, dependencies的缩写, 意思是, 列出动态库依赖关系。

posted @ 2018-03-14 16:54  安迪9468  阅读(844)  评论(0编辑  收藏  举报