ANTeam

V1

2022/03/02阅读:63主题:红绯

Linux最常用命令汇总

本文大纲截图:

一、远程连接

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 auxa:显示终端上的所有进程,包括其他用户的进程;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

pingWindows、UnixLinux系统下的一个命令。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是一个下载文件的工具,它用在命令行下

安装wgetyum 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 fanmao07chmod –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 devcat /etc/groupls -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用户指定所属组teacheruseradd -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的软链接,vivim 的快捷方式,输入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:

  • targzip 命令结合可以使用实现打包和压缩
  • 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:

  • tarbzip2 命令结合使用可以实现文件打包和压缩
  • 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:取消之前指定的关机计划

分类:

后端

标签:

后端

作者介绍

ANTeam
V1