本文大纲截图:
目录
1、Windows下通过xshell与xftp远程操作Linux系统
2、Window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH Secure Shell ,Teamviewer等。
一、远程连接
1、Windows下通过xshell与xftp远程操作Linux系统
xshell 是一个客户端软件, 我们在本地Windows上用它来连接Linux系统(服务器), 并通过它提供的命令行界面操作Linux;
xftp是一款文件传输软件, 可以将本地Windows上的文件传输到服务器Linux系统上
2、Window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH Secure Shell ,Teamviewer等。
PuTTY下载安装:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
XShell下载安装:https://www.xshellcn.com/
Teamviewer下载安装:https://www.teamviewer.com/en/
二、系统运行
1、系统资源
1.1 系统信息相关
-
hostname: 查看主机名
-
who: 查询登录到系统的用户
-
whoami: 确认自己身份
-
pwd:显示当前用户所在工作目录位置
- history: 查看当前用户运行命令的历史
-
-c
清空历史命令; -
-w
把缓存中的历史命令写入历史命令保存文件~/.bash_history
; -
提示:默认保存
1000
条/etc/profile HISSIZE=10000
-
-
clear:清屏
- su:切换用户命令
-
如切换到root用户:
su root
-
-
passwd:设置用户密码
-
chkconfig --list:查看系统服务列表
-
service 服务名:
status/start/stop/restart
:查看服务状态、启动、停止或重启服务
-
man -h:帮助
-
command --help:显示 command 命令的帮助信息
-
vmstat:查看虚拟内存
-
fdisk -l:查看硬盘及分区情况
-
uname -m:查看系统是几位操作系统
-
uname -a:查看详细的系统内核版本和系统的操作系统,包括内核名称、主机名、内核版本、处理器架构等
-
uname -r:显示正在使用的内核版本
-
cat /proc/meminfo:校验内存使用
-
cat /proc/cpuinfo:显示
CPU info
的信息 -
cat /proc/swaps:显示哪些
swap
被使用 -
cat /proc/interrupts:显示中断
-
cat /proc/version:显示内核的版本
-
cat /proc/net/dev:显示网络适配器及统计
-
cat /proc/mounts:显示已加载的文件系统
1.2 时间和日期
data:查看和设置系统时间【设置日期和时间格式:data 月日时分年.秒
】
cal:查看日历,-y
:可以查看一年的日历
- 举例:
-
cal 2022
,查看2022年一年的日历 -
date 022722372022.00
,设置系统时间为2022年02月27日 22:37分00秒
-
1.3 磁盘和目录空间
df:disk free
显示磁盘剩余空间
du:disk usage
显示目录下的文件大小
参数:-h
,以人性化的方式显示文件大小
- 举例:
-
df -h
,显示磁盘剩余空间 -
du -h [目录名]
,显示目录下的文件大小
-
1.4 进行信息
缩写说明: UID
:用户ID;PID
: 进程ID;PPID
: 父进程;C
: 进程cpu占用率;Stime
: 进程从启动到现在的时间;TTY
: 终端号;CMD
: 命令名称和参数
ps:process status
查看进程(动态)
- 举例:
-
ps -ef:
-ef
,显示所有运行进程, 并显示启动进程的命令 -
ps aux:
a
:显示终端上的所有进程,包括其他用户的进程;u
:显示进程的详细状态;x
:显示没有控制终端的进程
-
top:动态显示运行中的进程并且排序;退出 top
可以直接输入 q
kill:终止指定代号的进程,-9
表示强制终止【提示:使用 kill
命令时,最好只终止由当前用户开启的进程,而不要终止 root
身份开启的进程,否则可能会导致系统崩溃。】
-
举例:
- 通过进程名找到进程, 再杀死进程:
-
1)通过命令|查找tomcat进程
-
ps –ef | grep tomcat
-
说明:
ps –ef
是查找所有运行的进程, 通过管道符找到所有进程中包含了”tomcat”字符串的进程, 即为tomcat进程,如:tomcat进程id为:5541
-
2)杀死此进程
-
格式:
kill -9 进程id
,即:kill -9 5541
-
- 通过命令查找到占用此端口的进程编号:
-
1)
netstat –apn|grep 8080
,根据8080查进程,假如为: 5541 -
2)杀死进程:
kill -9 pid (kill -9 5541)
-
1.5 系统性能管理
1)内存瓶颈:
-
free:查看内存使用
-
vmstat 3 100:查看swap in/out详细,定位是否存在性能瓶颈,其中 3 为间隔时间,100 为监控次数
-
sar -r 3:类似free,查看内存使用情况,但不包含swap的情况
2)磁盘瓶颈:
-
df -hl:查看磁盘剩余空间
-
du -sh:查看磁盘使用了多少空间
-
iostat -x:看系统各个磁盘的读写性能,重点关注await和iowait的CPU占比
-
iostat -x -k -d 1:详细列出磁盘的读写情况。当看到I/O等待时间所占CPU时间的比重很高时,首先要检查机器是否正在大量使用交换空间,同时关注iowait占比CPU的消耗是否很大,如果大说明磁盘存在大的瓶颈,同时关注await,表示磁盘的响应时间,以便于小于5ms。
-
iotop:查看哪个进程在大量读取IO。一般先通过iostat查看是否存在io瓶颈,再定位哪个进程在大量读取IO。
3)CPU瓶颈:
-
top:查看CPU总体消耗,包括分项消耗,如:
user,system,idle,nice
等消耗 -
top -H:按照CPU消耗高低进行排序 应用场景:
top
,然后shift+h
:显示java线程;然后shift+M
:按照内存使用进行排序;shift+P
:按照CPU时间排序;shift+T
:按照CPU累计使用时间排序。多核CPU,按"1"
进入top视图
。 -
ps -Lp 进程号 cu:查看某个进程的CPU消耗排序
-
sar -u 3:查看CPU总体消耗占比,
3
为间隔时间
4)网络瓶颈:
-
cat /var/log/messages:查看内核日志,查看是否丢包
-
cat /proc/net/snmp:查看和分析240秒内网络包量、流量、错包、丢包。用于计算重传率
tcpetr=RetransSegs/OutSegs
-
dmesg:查看系统内核日志
-
watch more /proc/net/dev:用于定位丢包、错包情况,以便看网络瓶颈。重点关注
drop
(包被丢弃)和网络包传送的总量,不要超过网络上限 -
sar -n SOCK:查看网络流量
-
netstat -na|grep ESTABLISHED|wc -l:查看
tcp
连接成功状态的数量。此命名特别消耗CPU,不适合进行长时间监控数据收集 -
netstat -na|awk'{print $6}'|sort|uniq -c |sort -nr:查看
tcp
各个状态数量 -
ss state ESTABLISHED| wc -l:更高效地统计tcp连接状态为ESTABLISHED的数量
-
dig 域名:查看域名解析地址
-
traceroute ip:查看路由经过的地址。常用于定位网络在各个路由区段的耗时
-
netstat -i:查看网络错误
-
ping ip:测试网络性能
5)应用瓶颈:
-
ps -ef | grep java:查看某个进程的id号
-
ps -efL | grep [PID] | wc -l:查看某个进程创建的线程数
-
ps -ef | grep httpd | wc -l:查看特定进程的数量
-
jstack -l pid:查看线程是否存在死锁
-
cat * .log | grep * Exception | wc -l:统计日志文件中包含特定异常数量
-
find / -type f -name "*.log" | xargs grep "ERROR"
:统计所有的log文件中,包含Error字符的行。这个在排查过程中比较有用。 -
grep -v 'HTTP/1.1''200'
:取出非200响应码的URL
2、系统网络
网卡是一个专门负责网络通讯的硬件设备。
IP地址是设置在网卡上的地址信息。 可以把 电脑 比作 电话,网卡相当于SIM卡,IP地址相当于电话号码。
防火墙:所谓”防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法, 它实际上是一种隔离技术,保护内部网免受非法用户的侵入,它是一种位于内部网络与外部网络之间的网络安全系统。一项信息安全的防护系统, 依照特定的规则, 允许或是限制传输的数据通过。使用场景:线上环境的防火墙设置;运维/开发管理维护;测试环境的防火墙设置;若内网测试, 务须设置, 直接关闭。
即时生效, 重启后失效:
-
开启: service iptables start
-
关闭: service iptables stop
即时生效,重启后不失效:
-
开启:chkconfig iptables on
-
关闭:chkconfig iptables off
2.1 ifconfig
ifconfig:查看网卡配置信息(已启用的网络接口信息)
ifconfig | grep inet:查看网卡对应的 IP 地址
2.2 ping
ping是Windows、Unix
和Linux
系统下的一个命令。Ping
也属于一个通信协议, 是TCP/IP
协议的一部分。利用 ”ping” 命令可以检查网络是否连通
ping:查看网络是否连接通畅
ping ip地址:检测到目标主机是否连接正常
ping 127.0.0.1:检测本地网卡工作是否正常
2.3 netstat
netstat:查看网络状态(net status的简写),显示网络连接、路由表和网络接口信息
netstat –apn:查看所有端口【an:按一定顺序排列输出;p:表示显示哪个进程在调用】
2.4 wget
wget是一个下载文件的工具,它用在命令行下
安装wget:yum install -y wget
wget:从网路上自动下载文件
wget --help:查看帮助手册
wget -O:下载并以不同的文件名保存(-O:来指定一个文件名)
-
例如:
<a href="http://www.minjieren.com/wordpress-3.1-zh_CN.zip" rel="noopener">http://www.minjieren.com/wordpress-3.1-zh_CN.zip</a>
tail -f wget-log:查看下载进度
wget -spider: 模拟下载,不会下载,只是会检查是否网站是否好着
-
例如:
wget --spider www.baidu.com
# 不下载任何文件
wget -c:断点续传;使用wget -c重新启动下载中断的文件:对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件
-
例如:
wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
wget –tries:增加重试次数;如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。如果需要,你可以使用–tries
增加重试次数。
-
例如:
wget –tries=40 URL
wget -i:下载多个文件
-
1)首先,保存一份下载链接文件
cat > filelist.txt
-
2)接着使用这个文件和参数-i下载:
wget -i filelist.txt
wget –mirror:镜像网站
wget –reject:过滤指定格式下载
-
例如:
wget –reject=gif url
,想下载一个网站,但你不希望下载图片
wget -o:把下载信息存入日志文件;不希望下载信息直接显示在终端而是在一个日志文件
-
例如:
wget -o download.log URL
2.5 其他
tcpdump:监视指定数据包
tcpdump -i eth1:监视指定网络接口的数据包;如果不指定网卡,默认tcpdump
只会监视第一个网络接口,一般是eth0
,下面的例子都没有指定网络接口。
tcpdump host 210.27.48.1:监视指定主机的数据包;截获所有210.27.48.1
的主机收到的和发出的所有的数据包
telnet:远程登录
ssh:安全模式下远程登陆
ftp:文件传输
3、系统用户
在Linux系统中主要分为两类用户:超级用户root
和标准用户
。
超级用户root:Linux系统中的root账号
通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限。在大多数版本的Linux中,都不推荐 直接使用root账号登录系统。
标准用户:在Linux安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为“标准用户”
(只能在自己家目录下活动的用户,而不能修改系统设置相关的文件)。
sudo:当标准用户想要执行一些系统维护和管理相关的内容时,就可以在这个命令前加上 sudo,切换到 root 身份,来执行系统维护和管理的命令。如:添加用户,则只需要在 添加用户命令前 加上 sudo,这样就可以以 root 身份来执行添加用户的动作了。用户使用 sudo 时,必须先输入密码,之后有5分钟的有效期,超过期限必须重新输入密码。若其未经授权的用户企图使用 sudo,则会发出警告邮件给管理员。
su:是 substitute user 的缩写,表示使用另一个用户的身份。sudo 命令用来以其他身份来执行命令,预设的身份为 root。
- 例如:
-
切换身份后添加新用户lisi:
su root
,切换到root用户;useradd lisi
,root身份下添加新用户lisi -
不切换身份添加新用户zhangsan:sudo useradd zhangsan,标准用户下添加新用户zhangsan
-
3.1 用户权限
Linux系统是一种典型的多用户系统, 为了保护系统的安全性, Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定;不同的用户处于不同的地位, 也拥有不同的权限;在实际应用中,可以预先针对 用户组 设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限。
在Linux中我们可以使用ll或ls –l命令来显示一个文件的属性以及文件所属的用户和组:
每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。
修改文件/目录的权限:
chown:修改文件/目录的拥有者
-
格式:
chown 用户名 文件名/目录名
chgrp:修改文件/目录的组
-
格式:
chgrp -R 组名 文件名/目录名
,-R为递归修改修改文件/目录的组
chmod:修改 用户/组
对 文件/目录
的权限
-
格式一:
加上权限:chmod +rwx 文件名/目录名
、减去权限:chmod -rwx 文件名/目录名
- 举例:
-
chmod -rw 01.py
,减去 文件拥有者的 读 和 写 的权限 -
chmod +r 01.py
,加上 文件拥有者的 读 的权限 -
ls -l
-
cat 01.py
# 查看01.py的内容 -
gedit 01.py
# 使用gedit命令编辑 01.py 文件
-
- 举例:
-
格式二:
chmod [-R] 权限数字 文件或目录
,-R
为递归修改文件权限-
举例:
chmod –R 754 fanmao07
、chmod –R 777 fanmao07
-
扩展:
chmod
在设置权限时,可以简单地使用三个数字分别对应 拥有者/组 和 其他 用户的权限。
-
-
文件目录的权限:
-
读(
r
)-4 -
写(
w
)-2 -
执行(
x
)-1 -
无权限(
-
)-0
-
-
常用数字组合(
u
表示用户、g
表示组、o
表示其他)-
777——>u=rwx, g=rwx, o=rwx
-
755——>u=rwx, g=r-x, o=r-x
-
644——>u=rw-, g=r--, o=r--
-
-
举例:
-
演练目标:
-
1、将 01.py 的权限修改为
u=rwx,g=rx,o=r
-
2、将 123.txt 的权限修改为
u=rw,g=r,o=-
-
3、将 test 目录以及目录下的 所有 文件权限修改为
u=rwx,g=rwx,o=rx
-
-
演练命令:
-
chmod 754 01.py
-
ls -l
-
chmod 640 123.txt
-
ls -l
-
chmod -R 775 test
-
ls -l
-
chmod -R 755 文件名/目录名
:递归修改文件/目录权限
-
3.2 用户组管理
用户 是 Linux 系统工作中重要的一环,用户管理 包括 用户 与 用户组 管理。用户组:为了方便用户管理,提出了 组 概念。在实际应用中,可以预先针对 用户组 设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限。
注意:
-
创建组/删除组的终端命令都需要通过
sudo
执行。 -
组信息保存在
/etc/group
文件中。 -
/etc
目录是专门用来保存系统配置信息的目录。
groupadd:添加组
-
格式:
groupadd 组名
-
扩展:
groupadd -g 编号 组名
,添加分组并指定编号
groupmod:修改组名
-
格式:
groupmod -n 新组名 原组名
-
扩展:
groupmod -g 编号 组名
,修改组编号
chgrp:修改 文件/目录
所属组
-
格式:
chgrp -R 所属组组名 文件/目录名
cat /etc/group:确认组信息
groupdel:删除组
-
格式:
groupdel 组名
-
扩展:
groupdel 编号
,通过组的编号删除组 - 举例:
-
1、在 python 用户的桌面文件夹下创建 Python学习 目录:
mkdir /home/python/Desktop/Python学习
-
2、新建 dev 组:
sudo groupadd dev
、cat /etc/group
、ls -l
-
3、将 Python学习 目录的组修改为 dev:
sudo chgrp -R dev Python学习/
、ls -l
-
newgrp: 切换用户组
-
举例:
newgrp root
,将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。
3.3 用户管理
注意:
-
创建用户/删除用户/修改其他用户密码 的终端命令都需要通过
sudo
执行。 -
创建用户时,默认会创建一个和 用户名同名 的组名。
-
用户信息保存在 /etc/passwd 文件中。
-
创建用户时,如果忘记添加 -m 选项指定新用户的家目录——最简单的方法就是 删除用户,重新创建。
用户信息:
-
whoami:显示登录的用户名
-
finger zhangsan:显示用户详细资料
-
id zhangsan:显示指定用户信息,包括用户编号,用户名 主要组的编号及名称,附属组列表
-
groups zhangsan:显示 zhangsan 用户所在的所有组
useradd:添加新用户
-
格式:
useradd -m -g 组 新用户名
,-m
:自动建立用户家目录;-g
:指定用户所在的组,否则会建立一个和新用户同名的组 -
例如:
useradd -g teacher zhangsan
:为zhangsan
用户指定所属组teacher
;useradd -d /home/zhangsan zhangsan
,-d
:为用户指定工作目录。
passwd 用户名:设置用户密码,如果是普通用户,直接用 passwd
,可以修改自己的账户密码
usermod:修改用户
-
修改用户所属组:
usermod -g 新所属组组名 用户
,例如:usermod -g stu zhangsan2
-
修改用户名:
usermod -l 原用户名 新用户名
,例如:usermod -l zhangsan zhangsan2
userdel:删除用户
-
格式:
userdel -r 用户名
,-r
:选项会自动删除用户家目录
cat /etc/passwd | grep 用户名:确认用户信息;新建用户后,用户信息会保存在 /etc/passwd
文件中
su - 用户名:切换用户,并且切换目录;-
可以切换到用户家目录,否则保持位置不变;su
不接用户名,可以切换到 root
,但是不推荐使用,因为不安全。
exit:退出当前登录账户,返回到上次登录的用户。
举例:
-
创建 zhangsan 新用户:
sudo useradd -m -g dev zhangsan
-
查看新用户家目录信息:
ls -l /home
-
设置指定用户密码:
sudo passwd zhangsan
-
查看 zhangsan 用户信息(-n 显示行号):
cat -n /etc/passwd
-
搜索查看 zhangsan 用户信息:
cat /etc/passwd |grep zhangsan
-
删除 zhangsan 用户(-r:选项会自动删除用户家目录):
sudo userdel -r zhangsan
-
查看用户信息(-n 显示行号)
cat -n /etc/passwd
4、目录&文件
4.1 系统目录结构
Linux的文件系统是采用层级式的树状目录结构, 在此结构中的最上层是根目主目录, 下层是各种各样的子目录和文件。
4.2 目录操作
创建目录: mkdir
-
格式:
mkdir 目录名 –p
,-p
:可以递归创建目录 -
注意: 在Linux中,同一目录中的目录和文件不能重名。
修改目录: chown、chgrp、chmod
chown:修改目录的拥有者
-
格式:chown 用户名 目录名
chgrp:修改目录的所属组
-
chgrp -R 组名 目录名
,-R为递归修改修改目录的组
chmod:修改目录的权限
-
chmod [-R] 权限数字 目录
, -R为递归修改目录权限 -
chmod +/-rwx 目录名
查看目录: pwd、tree、ll、ls -l
pwd:显示当前路径
tree 目录名:以树状图列出文件目录结构;tree -d
,-d
只显示目录
ll 或 ls -l:显示文件/目录的属性
切换目录: cd
- 格式: cd 目录路径
-
cd . 当前目录
-
cd .. 切换到上级目录
-
cd / 切换到根目录
-
cd ~ (或只有cd )切换到当前用户主目录(home底下以用户名命名的文件夹)/root目录
-
cd - 可以在最近两次工作目录之间来回切换
-
删除目录: rmdir、rm
rmdir:删除空目录
-
格式一:
rmdir 目录名
,rmdir
只能删除空目录,如果目录下有文件了则不能被删除; -
格式二:
rm -rf 目录名/文件名
,-f
:强制删除,忽略不存在的文件,无需提示;-r
:递归地删除目录下的内容,删除文件夹时必须加此参数 -
注意:
rm -rf *
删库!!!整个系统就没了。
4.3 文件操作
在Linux系统中, 几乎所有内容包括文档、命令、设备和目录等都组织成文件的形式, 用文件来管理
新建文件: touch
touch
-
格式:
touch 文件名
-
举例:
touch filename.txt
- 注意:
-
如果文件不存在,可以创建一个空白文件;
-
如果文件已经存在,可以修改文件的末次修改日期。
-
修改文件: chown、chgrp、chmod
chown:修改文件的拥有者
-
格式:
chown 用户名 文件名
chgrp:修改文件的所属组
-
格式:
chgrp -R 组名 文件名
,-R为递归修改修改文件的组
chmod:修改文件的权限
-
格式一:
chmod [-R] 权限数字 文件名
, -R为递归修改文件权限 -
格式二:
chmod +/-rwx 文件名
查找文件:ls、find、grep
ls
ls:查看目录及文件
-
格式:
ls [选项] 路径
(若没有路径则显示当前目录的内容) - 选项:
-
-a
显示所有文件 隐藏文件 -
-l
显示文件属性,长格式显示文件 -
ls -l
,从左到右依次是:权限、硬链接数、拥有者、组、大小、时间、名称(权限: 第 1 个字符如果是 d ,表示目录;硬链接数: 通俗地讲,就是有多少种方式,可以访问到当前目录/文件;子目录越多,其硬链接越多;通过绝对路径进入<在目录下输入cd .
进入;在目录的不同子目录中输入cd ..
进入>;拥有者: 家目录下 文件/目录 的拥有者,通常都是当前用户;组: 在Linux中,很多时候,会出现组名和用户名相同的情况)
-
- 举例:
-
ls -l
-
ls -la
-
ls * [0-9]*
:显示包含数字的文件名和目录名
-
find
find:查找文件
-
格式:
find [路径] [选项]
,如:find [路径] -name "* .py"
:查找指定路径下扩展名是.py
的文件,包括子目录 -
注意:
-
find 命令功能非常强大,通常用在特定的目录下搜索符合条件的文件。
-
如果省略路径,表示在当前文件夹下查找。
- 使用find命令时同时可用通配符:
-
*
:代表任意个数字符 -
?
:代表任意一个字符,至少1个 -
[]
:表示可以匹配字符组中的任意一个 -
[abc]
:匹配 a、b、c 中的任意一个 -
[a-f]
:匹配从 a 到 f 范围内的任意一个字符
-
- 举例:
-
find . –name * .log
:在当前目录查找以.log结尾的文件 -
find / -name log
:在根目录查找log命名的目录 -
find -name "*1*"
、find -name "*.txt"
、find -name "1*"
-
find / -name file1
:从 '/' 开始进入根文件系统搜索文件和目录 -
find / -user user1
:搜索属于用户 'user1' 的文件和目录 -
find /home/user1 -name \*.bin
:在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 -
find /usr/bin -type f -atime +100
:搜索在过去100天内未被使用过的执行文件 -
find /usr/bin -type f -mtime -10
:搜索在10天内被创建或者修改过的文件 -
find / -name \*.rpm -exec chmod 755 '{}' \
:搜索以 '.rpm' 结尾的文件并定义其权限 -
find / -xdev -name \*.rpm
:搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
-
grep
grep:搜索文本文件内容或文件名
-
格式:
grep [选项] 字符串 文件名
- 选项:
-
-n
:显示匹配行及行号 -
-v
:显示不包含匹配文本的所有行(相当于求反) -
-i
:忽略大小写
-
- 参数:
-
^
a:行首,搜寻以 a 开头的行 -
ke
$
:行尾,搜寻以 ke 结束的行
-
- 注意:
-
Linux系统中
grep
命令是一种强大的文本搜索工具 -
grep
在指定文件中查找字符(串)并打印该行,并允许对文本进行 模式 查找,所谓模式查找,又被称为正则表达式。 -
过滤作用,经常跟管道符号一起出现
|
-
- 举例:
-
grep band file
:在file文件中找寻band字符串 -
grep as 123.txt
:在123.txt文件中查找as字符串 -
grep -n as 123.txt
:显示匹配行及行号 -
grep -v as 123.txt
:求反,不包含 as 单词的所有行 -
grep -i as 123.txt
:忽略大小写 -
grep -vn as 123.txt
:显示不匹配行及其行号 -
grep -in "hello python" 123.txt
:忽略大小写并显示匹配行及行号
-
查看文件内容: cat、head、tail、more、echo
cat
cat:显示文本文件内容,查看文件内容、创建文件、文件合并、追加文件内容等功能
-
格式:
cat [选项] 文件名
- 选项:
-
-b
:对非空输入行编号 -
-n
:对输出的所有行编号
-
- 注意:
-
对应英文:
concatenate
-
cat 会一次显示所有的内容,适合查看内容较少的文本文件。
-
Linux中还有一个
nl
的命令和cat -b
的效果等价。
-
head
head:查看前几行
-
格式:
head –n 5 文件名
:查看前5行
tail:查看后几行
-
格式:
tail –n 5 文件名
:查看后5行 -
例如:
tail –f error.log
:不断刷新, 看到最新内容(tail
:从指定点开始将文件写到标准输出, 使用tail
命令的-f
选项可以方便查阅正在改变的日志文件)
more
more:分屏显示内容
-
格式:
more 文件名
-
注意:
-
分屏显示文件内容,每次只显示一页内容,适合查看内容较多的文本文件
- 使用 more 的操作键
-
空格键
:显示手册页的下一屏 -
Enter键
:一次滚动手册页的一行 -
b
:回滚一屏 -
f
:前滚一屏 -
q
:退出 -
/
word:搜索 word 字符串
-
echo
-
格式:
echo 文字内容
,在终端中显示参数指定的文字,通常会和重定向联合使用 -
举例:
-
echo Hello Python
- echo和重定向的联合使用
-
echo Hello Python > a
-
cat a
-
ls -lh
-
ls -lh > a
-
echo Hello Python >> a
-
ls >> a
-
cat a
-
tree >> a
-
- echo 和 touch 创建文件中的不同
-
echo 创建文件时可以同时将内容也写入文件中;touch 就只能创建文件,文件内容要后续加入。
-
touch b
-
cat b
-
echo Hello > b
-
cat b
-
rm b
-
echo Hello Python > b
-
cat b
-
复制文件:cp
cp
-
格式:
cp [选项] 源文件或目录 目标地址
- 选项:
-
-f
:已经存在的目标文件直接覆盖,不会提示 -
-i
:覆盖文件前提示 -
-R
:拷贝目录及目录下所有目录和文件 目录(文件夹) -
-r
:若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
-
-
例如:
cp a.txt b.txt
:将a文件复制, 且另命名为b.txt
文件(目录名) - 注意:
-
复制后的文件不需要重命名,则只需要 接 复制的目标地址路径;
-
复制后的文件需要重命名,则只需要在 目标地址后面加上新文件名。
-
移动文件:mv
mv
-
格式:
mv 源文件或目录 目标地址
-
选项:
-i
:覆盖文件前提示 - 例如:
-
mv a.txt ../
:将a文件移动到上级目录(将一个文件移动到另一个目录没有重命名) -
mv a.txt ../b.txt
:将a文件移动到上一级并改名为b文件(将一个文件移动到另一个目录并重命名)
-
- 注意:
-
mv命令
可以用来移动文件或目录,也可以给 文件或目录 重命名 -
移动后的文件需要重命名,则只需要在 目标地址后面加上新文件名。
-
利用 mv 重命名:只需要路径不变,修改文件名即可。
-
删除文件:rm
-
格式:
rm [选项] 文件名
- 选项:
-
-f
:强制删除 -
-r
:递归删除目录
-
-
例如:
rm -rf 文件或目录
:谨慎使用
4.4 vim编辑器
应用场景: 对服务器上的文件进行简单的修改,可以使用ssh远程登录
到服务器上,并且使用vi
进行快速的编辑即可;常见需要修改的文件包括源程序、配置文件、文本文件
vim键盘图:
vi 和 vim:
-
vi 是
Visual interface
的简称,是Linux中最经典常用的、功能强大的文本编辑器。 -
在很多Linux发行版本中,直接把vi做成vim的软链接,
vi
是vim
的快捷方式,输入vi
,打开的就是vim
-
vim = vi + improved
,vim 是从 vi 发展出来的一个文本编辑器,支持代码补全、编译及错误跳转等方便编程的功能特别丰富
三种工作模式:
命令模式:入口
-
打开文件首先进入命令模式,是使用vi的入口;
-
通过 命令 对文件进行常规的编辑操作,例如:定位、翻页、复制、粘贴、删除......
-
在其他图形编辑器下,通过快捷键 或者 鼠标 实现的操作,都在命令模式下实现
末行模式:出口
-
末行模式 是 vi 的出口
-
执行保存、退出等操作
- 要退出vi返回到控制台,需要在末行模式下输入命令:
-
w
:保存 -
q
:退出,如果没有保存,不允许退出 -
q!
:强制退出,不保存退出 -
wq
:保存并退出 -
x
:保存并推出
-
编辑模式:正常的编辑文字
- 文件编辑中输入如下命令
-
/
Python:从光标开始处向文件尾搜索Python -
?
Python:从光标开始处向文件首搜索Python -
:set nu
:显示每一行的行数 -
按键盘
G
:可以直接定位到最末尾 -
注意:键盘输入, 都是英文输入法进行输入
-
三种模式切换
命令模式
-
打开文件,进入命令模式
-
从 编辑模式 到 命令模式:直接按
ESC 键
-
从 末行模式 到 命令模式:直接按
ESC 键
编辑模式
-
从 命令模式 进入 编辑模式:输入
i
。(i为insert) -
从 末行模式 到 编辑模式:按下
ESC键
到 命令模式,在输入i
进入编辑模式 - 命令模式下,用 插入命令 进入
-
i
:在当前字符前插入文本 -
I
:在行首插入文本 -
a
:在当前字符后添加文本 -
A
:在行末添加文本 -
o
:在当前行后面插入一空行 -
O
:在当前行前面插入一空行
-
末行模式
-
从 命令模式 到 末行模式:输入
:
(冒号为英文状态下的冒号) -
从 编辑模式 到 末行模式:按下 ESC键 到 命令模式,再输入
:
进入末行模式 -
注意:编辑模式和末行模式不能直接切换,需要经过命令模式中转。
4.5 打包/解包
打包 / 解包:tar
tar 是 Linux 中最常用的 备份工具,此命令可以把一系列文件 打包到 一个大文件中,也可以把一个打包的大文件恢复成一些列文件。
打包文件:
-
格式:
tar -cvf 打包文件.tar 被打包的文件/路径...
- 选项:
-
c
:生成档案文件,创建打包文件 -
v
:列出归档解档的详细过程,显示进度 -
f
:指定档案文件名称,f
后面一定是.tar文件
,所以必须放选项最后
-
- 举例:
-
tar -cvf py.tar 01.py 02.py 03.py
-
ls -lh
-
解包文件:
-
格式:
tar -xvf 打包文件.tar
- 选项:
-
x
:解开档案文件 -
v
:列出归档解档的详细过程,显示进度 -
f
:指定档案文件名称,f
后面一定是.tar文件
,所以必须放选项最后
-
-
举例:
tar -xvf py.tar
4.6 压缩/解压缩
压缩 / 解压缩:gzip、bzip2
gzip:
-
tar
和gzip
命令结合可以使用实现打包和压缩 -
tar
只负责打包文件,但不压缩 -
用
gzip
压缩tar
打包后的文件,其扩展名一般用xxx.tar.gz
-
在
tar
命令中有一个选项-z
可以调用gzip
,从而可以方便的实现压缩和解压缩的功能。
压缩文件:
-
格式:
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...
- 举例:
-
tar -zcvf py.tar.gz *.py
-
ls -lh
-
解压缩文件:
-
格式一:
tar -zxvf 打包文件.tar.gz
-
格式二:
tar -zxvf 打包文件.tar.gz -C 目标路径
,解压缩到指定路径,-C
:解压缩到指定目录,注意:要解压缩的目标目录必须存在 - 举例:
-
tar -zxvf py.tar.gz
-
tar -zxvf py.tar.gz -C /home/Desktop/gz
-
bzip2:
-
tar
与bzip2
命令结合使用可以实现文件打包和压缩 -
tar
只负责打包文件,但不压缩; -
用
bzip2
压缩tar
打包后的文件,其扩展名一般用xxx.tar.bz2
。 -
在
tar
命令中有一个选项-j
可以调用bzip2
,从而可以方便的实现压缩和解压缩的功能。
压缩文件:
-
格式:
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...
-
举例:
tar -jcvf py.tar.bz2 * .py
解压缩文件:
-
格式:
tar -jxvf 打包文件.tar.bz2
- 举例:
-
tar -jxvf py.tar.bz2 -C /home/Desktop/bz2
-
tree
-
5、其他
5.1 快捷按键
-
Tab键
:补全命令,补全目录、补全命令参数等 -
方向键
:”上” 、”下”, 对历史命令, 上一个, 下一个进行查找 -
Ctrl+c
:结束当前正在运行的程序 -
Ctrl+r
:在历史命令中搜索 -
Ctrl+l
:清屏 -
Ctrl+d
:键盘输入结束或退出终端 -
Ctrl+s
:暂停当前程序,暂停后按下任意键恢复运行 -
Ctrl+z
:将当前程序放到后台运行,恢复到前台为命令fg
-
Ctrl+a
:将光标移至输入行头,相当于 Home 键 -
Ctrl+e
:将光标移至输入行末,相当于 End 键 -
Ctrl+u
:删除从光标所在位置到行首 -
Ctrl+k
:删除从光标所在位置到行末 -
Alt+Backspace
:向前删除一个单词 -
Shift+PgUp
:将终端显示向上滚动 -
Shift+PgDn
:将终端显示向下滚动
5.2 shell脚本简介
shell脚本:
-
1.
vi test.sh
---创建shell脚本文件 - 2.
#!/bin/sh
---解释器-
a="hello world"
---对变量赋值: -
echo "A is:"
---输出常量 -
echo $a
---输入变量值
-
-
3.
#./test.sh
---运行shell脚本
5.3 管道
管道命令: 管道使用”|
”符号, 并且在命令之间建立管道, 将前面命令的输出作为后面命令的输入 例如:ll | grep abc
,管道前面的命令显示当前目录下的文件, 后面从列出的文件名中寻找含有abc字符串
的文件或者目录。
常用的管道命令:
-
more:分屏显示内容,
ls -lha ~ | more
-
grep:在命令执行结果的基础上查询指定的文本,
ls -lha ~ | grep vi
5.4 重定向
重定向 >
和 >>
Linux允许将命令执行结果重定向到一个文件,将原本应显示在终端上的内容输出/追加到指定文件中。
-
"
>
" 表示输出,会覆盖文件原有的内容 -
“
>>
” 表示追加,会将内容追加到已有文件的末尾
5.5 软硬链接
软链接: symbolic link
,类似于 Windows里的快捷方式,这个软链接文件的内容,其实是另外一个源文件的路径和名称,当打开 软连接文件时,实际上系统会根据其内容找到并打开源文件。删除软连接文件,不会影响源文件。
-
格式:
ln -s 文件/目录名 软链接名
-
例如:
ln -s file1 lnk1
:创建一个指向文件或目录的软链接
硬链接: hard link
,这类文件会拥有自己的 inode
节点和名称,其 inode
会指向文件内容所在的数据块。同时,该文件内容所在的数据块的引用计数会加 1
。当此数据块的引用计数大于等于 2
时,表示有多个文件同时指向了这一数据块。一个文件修改,多个文件都会生效。当删除其中某个文件时,对另一个文件不会有影响,仅仅是数据块的引用计数减 1
。当引用计数为 0
时,则系统才会清除此数据块。
-
格式:
ln 文件/目录名 硬链接名
-
例如:
ln file1 lnk1
:创建一个指向文件或目录的物理链接
三、系统关机
1、重启
-
reboot
-
shutdown -r now
-
init 6
- 系统的运行级别
-
0 关机
-
1 单用户
-
2 不 完全多用户,不包含NFS服务
-
3 完全多用户
-
4 未分配
-
5 图形界面
-
6 重启
-
2、关机
-
halt
shutdown -h
-
无参数
:不指定选项和参数,默认表示 1 分钟之后 关闭电脑;远程维护服务器时,最好不要关闭系统,而应该重新启动系统。 -
now
:马上关机 -
hours:minutes
:按预定时间关机 -
shutdown -c
:取消按预定时间关机
-
-
init 0
-
poweroff
:关机和关闭电源
3、注销
注销: logout
4、举例
-
shutdown -r now
:重新启动操作系统,其中now
表示现在 -
shutdown now
:立刻关机,其中now
表示现在 -
shutdown 20:25
:系统在今天的20:25
会关机 -
shutdown +10
:系统在过10分钟后
自动关机 -
shutdown -c
:取消之前指定的关机计划