Linux常用命令基础及进阶V1

2021-05-19 11:49:36 浏览数 (2)

更新版本

5月18日版本V1
  1. 一些常用命令,可以完成Linux基本操作了,V1未整理版。
  2. 所使用的IP是随便写的
  3. 文章基于腾讯云服务器Linux CentOS7.9
  4. 服务器搭建从零开始参考我的文章Linux从零开始环境搭建及学习V1

基础必备命令

命令构成

命令的构成:Command Name、Options、Arguments、Extras 四个部分,很多情况下后面三部分都是可省略的

例如 rm -rf ab.txt

基本知识
代码语言:txt复制
1. /   根目录 cd / 返回最顶层磁盘位置 /
2. ~  当前用户目录 cd ~ 返回用户目录 /Users/dulane
3. .   当前目录 cd ./music 所在位置 /Users/dulane/music
4. ../ 父级目录 cd ../ 所在位置 /Users/dulane
基本命令
代码语言:txt复制
1. cd 跳转(cd 有后面必须有空格)
2. cd / 跳转根目录 /
3. cd ~ 跳转用户目录 /Users/dulane
4. cd music 跳转到music文件下 /Users/dulane/music 
5. cd ../ 返回上级目录 /Users/dulane

6. ls 当前目录下的文件
7. ls -a 当前目录下的文件包括隐藏文件
8. ls -la 当前目录下文件包括详细信息

9.  pwd 显示当前文件位置 /Users/dulane
10. history 显示所以操作的历史命令   532  history
11. clear 清空终端

12. mkdir command 创建名字为command的文件夹 
13. rmdir command 删除空command文件夹
14. mv command command1 重命名或者移动文件
15. rm ab.txt 删除文件ab.txt
16. cp ab.txt abc.txt 复制文件ab.txt为abc.txt
17. touch aa.txt 新建aa.txt
18. open ab.txt 打开ab.txt
19. vi aa.txt 进入编辑模式 
20. ssh root@ip 连接远程服务器
21. sh build.sh 执行build命令
22. which java java的安装位置 /usr/bin/java

23. tab 键补全信息 
24. control c 结束内容回到命令行
vim基本命令
代码语言:txt复制
vi filename
i 插入模式
esc 推出插入模式
:w 保存当前编辑的文件但不退出
:w newfile 文件另存为
:w! filename 当前文件的内容替换filename中的原有内容
:q 退出,文件为保存时会提示
:q! 强制退出,不保存文件
:wq 先保存文件,然后退出到shell
/ 搜索 n下一个 N 上一个
dd 删除一行
yy 复制一行 
nyy 复制向下n行
p 粘贴

进阶命令

查看系统有几种shell
代码语言:txt复制
cat /etc/shells
安装zsh
代码语言:txt复制
sudo yum install zsh
安装oh-my-zsh
代码语言:txt复制
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
查找rpm安装的软件
代码语言:txt复制
rpm -qa | grep mysql
rpm -qa | grep oh-my-zsh
#自己make install安装的可能查不到
rpm -qa | grep ntpdate
rpm -qa | grep mysql
为 root 用户设置 zsh 为系统默认 shell:
代码语言:txt复制
chsh -s /bin/zsh root
如果你要重新恢复到 bash:
代码语言:txt复制
chsh -s /bin/bash root
更新sudo
代码语言:txt复制
yum update sudo

grep命令

代码语言:txt复制
# .表示当前目录。
#在多级目录中对文本进行递归搜索
grep "git" . -r -n
查看试图暴力破解你的主机ssh的坏蛋们:
代码语言:txt复制
grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr
把这些 ip 拉黑
代码语言:txt复制
cat /var/log/secure |  grep "Failed password for invalid user" | awk '{print $13}' | sort | uniq -c | sort -n | tail -10 |awk '{print "sshd:"$2":deny"}' >> /etc/hosts.allow 

tail -20 /etc/hosts.allow 
 
新建一个用户
代码语言:txt复制
useradd lane
设置密码
代码语言:txt复制
passwd aaa
禁止root用户登陆
代码语言:txt复制
vi /etc/ssh/sshd_config

查找#PermitRootLogin yes,
将前面的#去掉,“Yes”改为“No”,并保存文件。
重启ssh服务
代码语言:txt复制
systemctl restart sshd.service
禁用密码登陆开启
代码语言:txt复制
>>> vim /etc/ssh/sshd_config #修改 PasswordAuthentication yes/no
>>> systemctl restart sshd.service
免密登陆
代码语言:txt复制
#本地生成 rsa
ssh-keygen
#上传本地公钥至服务器,此处要输入root 密码
ssh-copy-id    -i    ~/.ssh/id_rsa.pub    root@xxx.xxx.xxx.xxx
#免密登录
ssh  root@xxx.xxx.xxx.xxx
#[密钥登录](https://goodgoodstudy.blog.csdn.net/article/details/113694654)
上传文件到远程服务器
代码语言:txt复制
 scp nginx-1.17.8.tar root@81.68.211.190:/root 
从远程复制文件到本地
代码语言:txt复制
#复制文件到本地
scp root@81.68.211.190:/root/software/nginx-1.17.8.tar /users/dulane/linux
#复制文件夹到本地
scp -r root@81.68.211.190:/root/software/nginx-1.17.8.tar /users/dulane/linux
移动文件位置
代码语言:txt复制
 mv notion.html staticData/static
解压tar软件包
代码语言:txt复制
tar -xvf nginx-1.17.8.tar
tar -xvf apache-tomcat-8.5.50.tar
查找占用的端口号
代码语言:txt复制
lsof -i:8080
结束进程
代码语言:txt复制
 kill 9483
 kill -9 pid
安装Nginx
代码语言:txt复制
- 安装Nginx依赖,pcre、openssl、gcc、zlib(推荐使⽤yum源⾃动安装)

  `yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel`

- 解包Nginx软件包:`tar -xvf nginx-1.17.8.tar`

- 进⼊解压之后的⽬录 nginx-1.17.8

- cd nginx-1.17.8

- 命令⾏执⾏./configure

- 命令⾏执⾏ make

- 命令⾏执⾏ make install,完毕之后在/usr/local/下会产⽣⼀个nginx⽬录
Nginx主要的命令
代码语言:txt复制
# 启动
/usr/local/nginx/sbin/ ./nginx
# 停止 Nginx
/usr/local/nginx/sbin/ ./nginx -s stop
# 重新载入配置文件
/usr/local/nginx/sbin/ ./nginx -s reload
# 重启 Nginx
/usr/local/nginx/sbin/ ./nginx -s reopen
安装jdk

方式一:

代码语言:txt复制
#默认安装位置为usr/lib/jvm
yum install -y java-11-openjdk.x86_64

方式二:

代码语言:txt复制
#解压
tar -zxvf jdk-8u211-linux-x64.tar.gz
#配置环境变量
vim /etc/profile
export JAVA_HOME=/DATA/jdk/jdk1.8.0_211 
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
#刷新环境变量
source /etc/profile 
#查询
java -version
启动tomcat
代码语言:txt复制
 ./sh startup.sh
 
 sh startup.sh
复制一个tomcat
代码语言:txt复制
cp -r apache-tomcat-8.5.50 apache-tomcat-8.5.50-1
vim复制光标所在的那一行
代码语言:txt复制
yy
复制光标所在的向下n行
代码语言:txt复制
nyy
向下向上粘贴
代码语言:txt复制
p为将已经复制的数据在光标下一行粘贴
P为将已经复制的数据在光标上一行粘贴
vim删除
代码语言:txt复制
删除一行:dd
删除以当前字符开始的一行字符:d$ 
删除以当前行开始的n行:ndd 
删除以当前字符开始的一个字:dw 
删除以当前字符开始的n个字:ndw 
vim查找
代码语言:txt复制
# 在文件中查找内容为word的字符串(向下查找)
/mode
# 在文件中查找内容为word的字符串(向上查找)
?mode
#查找下一个
n
#查找上一个
N
#关闭其它文件中高亮
set nohlsearch
压缩zip文件
代码语言:txt复制
zip -r abc123.zip abc 123.txt 
解压zip文件
代码语言:txt复制
#解压到同名文件夹下
unzip fileName.zip 
#解压到别名文件夹下的同名文件夹下
unzip mydata.zip -d mydatabak 
压缩tar包
代码语言:txt复制
tar cvf newFileName.tar fileName 
重命名文件
代码语言:txt复制
mv aa.txt bb.txt
删除文件或者空目录
代码语言:txt复制
rm aa.txt
rm aa
删除非空的文件
代码语言:txt复制
rm -r MyDocuments/
rm -rf MyDocuments/
查找文件
代码语言:txt复制
# 查找在当前目录及子目录查找 notion.html
find . -name "notion.html"
# 模糊查找
find . -name "noti*.html"
# 查找在当前目录及子目录查找 .html文件且名字包含notion
find . -name "*.html" | grep notion
# 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容
find . -type f -name "*" | xargs grep "140.206.111.111"
# 在/usr目录及其子目录下查找名字包含notion的普通文件 
find /usr -type f -name "*notion*.html"

find . -type 类型参数
#f 普通文件
#d 目录
显示文件夹下前10个文件名称
代码语言:txt复制
ls -l | head -n 5
查看文件内容前10行
代码语言:txt复制
head -n 10 README.md
查看文件内容后几行
代码语言:txt复制
tail -n 10 README.md
查看文件内容
代码语言:txt复制
more -dc README.md
#按 Space 键:显示文本的下一屏内容。
#按 Enter 键:只显示文本的下一行内容。
#按H键:显示帮助屏,该屏上有相关的帮助信息。
#按B键:显示上一屏内容。
#按Q键:退出rnore命令。
#-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
#-c:不进行滚屏操作。每次刷新这个屏幕;
less -e README.md
#不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。
#用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。
#要退出less程序,应按Q键。
#-e:文件内容显示完毕后,自动退出;
tcp 抓包命令
代码语言:txt复制
sudo tcpdump -nn
修改时间
代码语言:txt复制
#查看服务器的时间
date
#修改时间
date -s '08:00:00'
#同步最新时间
ntpdate -u ntp.api.bz
查看本机公网IP
代码语言:txt复制
curl ifconfig.me  
查看本机公网IP 格式化
代码语言:txt复制
curl ipinfo.io/json
查看本机内网IP
代码语言:txt复制
ifconfig
添加权限
代码语言:txt复制
chmod u x *.sh
Redis 允许外网访问
代码语言:txt复制
#获取是否被保护
config get protected-mode
#关闭保护,运行外网访问
config set protected-mode no
config set protected-mode yes
redis远程连接
代码语言:txt复制
redis-cli -h 81.68.211.190  -p  6379
更新yum
代码语言:txt复制
#内容很多
yum update
安装telnet
代码语言:txt复制
 #列出telnet相关的安装包
 yum list telnet*   
 #安装telnet服务
 yum install telnet-server 
#安装telnet客户端
 yum install telnet.*            
zookeeper常用命令
代码语言:txt复制
#进⼊bin⽬录,启动zk服务
#启动 
./zkServer.sh start
#停⽌
./zkServer.sh stop
#查看状态
./zkServer.sh status
查看运行的jar项目
代码语言:txt复制
ps aux|grep nginx-login-project-0.0.1-SNAPSHOT.jar
查看占用的端口号
代码语言:txt复制
lsof -i:8080
lsof -i:6379
 
查看cpu使用
代码语言:txt复制
#查看cpu信息:
top
查看IP流量信息
代码语言:txt复制
lsof -i | grep 118.223.30.156
查看端口是否开放
代码语言:txt复制
nc -zv 192.168.56.10 80 22 21
#也可以指定端口扫描的范围:
nc -zv 192.168.56.10 20-80
查看防火墙某一端口是否开放
代码语言:txt复制
firewall-cmd --zone=public --query-port=80/tcp
#查看所有开放的端口
firewall-cmd --permanent --zone=public --list-ports
查看防火墙状态
代码语言:txt复制
firewall-cmd --state  
开启防火墙
代码语言:txt复制
#开启
systemctl start firewalld 
#关闭
systemctl stop firewalld 
添加需要开放的端口
代码语言:txt复制
#在running 状态下,向firewall 添加需要开放的端口
#永久的添加该端口。去掉--permanent则表示临时。
firewall-cmd --permanent --zone=public --add-port=8080/tcp  
关闭开放的端口
代码语言:txt复制
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
加载防火墙配置,使得修改有效
代码语言:txt复制
firewall-cmd --reload  
netstat查看运行的端口
代码语言:txt复制
netstat -tunlp
#查看mysqld
netstat -anpt | grep mysql
找出运行在指定端口的进程:
代码语言:txt复制
netstat -an | grep ':80'
通过端口找进程ID
代码语言:txt复制
netstat -anp|grep 80 | grep LISTEN|awk '{printf $7}'|cut -d/ -f1
查看连接某服务端口最多的的IP地址
代码语言:txt复制
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{  ip[$1]} END {for(i in ip) print ip[i],"

0 人点赞