Linux常用命令操作【入门级】

导读:本篇文章讲解 Linux常用命令操作【入门级】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

如果你觉得内容对你有帮助的话,不如给个点赞+收藏,鼓励一下更新😂。

友情提示: 本文很多命令只举例子,不做详细介绍,具体请自行查询资料做笔记🐱‍👓

最后更新时间:2021/7/6 更新网络命令章节

文件

在Linux中一切皆文件

常见目录介绍

  • / 根目录
  • /root root用户的家目录
  • /home(家目录) 用于存放用户的个人数据,比如用户lagou的个人数据会存放到/home/lagou下面。
  • /etc(配置文件),Linux 用它来保管程序的配置。比如说mysql通常会在/etc/mysql下创建配置。再比如说/etc/passwd是系统的用户配置,存储了用户信息。
  • /bin(二进制) 包含了许多所有用户都可以访问的可执行文件,如 ls, cp, cd 等。
  • /sbin(系统二进制) 和/bin类似,通常是系统启动必需的指令,也可以包括管理员才会使用的指令。
  • /usr/bin,/usr/sbin系统预装的其他命令
  • /opt(Optional Software,可选软件) 通常会把第三方软件安装到这个目录。以后你安装软件的时候,可以考虑在这个目录下创建。
  • /tmp(临时文件) 用于存放应用的临时文件,通常用的是tmpfs文件系统。因为tmpfs是一个内存文件系统,系统重启的时候清除/tmp文件,所以这个目录不能放应用和重要的数据。
  • /var (Variable data file,,可变数据文件) 用于存储运行时的数据,比如日志通常会存放在/var/log目录下面。再比如应用的缓存文件、用户的登录行为等,都可以放到/var目录下,/var下的文件会长期保存。

绝对路径

目标文件的绝对路径(Absolute path),也叫作完全路径(full path),是从/开始,接下来每一层都是一级子目录,直到定位到目标文件为止。

文件种类

Linux目录下的七种文件:
普通文件、目录文件、可执行文件、管道文件、Socket文件、软链接文件、硬链接文件。
文件权限中的第一个字符代表的是文件类型

  • 普通文件的第一个字符为“-”
  • 目录文件的第一个字符为“d”
  • 字符设备文件的第一个字符为“c”
  • 块设备文件的第一个字符为“b”
  • 符号链接文件的第一个字符为“s”
  • 管道文件的第一个字符为“p”
    • 命名管道 “f”

文件相关命令

查看

  • pwd 查看工作目录。
  • cd 切换工作目录,支持绝对路径和相对路径(. or …)
    • - 回退
  • which 指令查找一个执行文件所在的路径。
  • ls 显示文件信息
    • 用空格隔开,可以同时显示多个目录
  • cat 查看文件,适合小型文件。
  • more,less 查看一个文件但是只读取用户看到的内容到内存,因此消耗资源较少,适合在服务器上看日志,less比more更方便,支持前后浏览。
  • head、tail 可以用来看文件的头和尾。
    • -f 文件内容更新后,显示信息同步更新
  • grep、egrep 指令搜索文件内容。
  • find 指令全局查找文件。
  • wc 统计文件内容
  • type 用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令
  • du 查看文件或者目录大小
    • -sh 支持通配符匹配

多条命令顺序执行,可以使用 ;  分开

操作

  • rm 删除文件。
  • touch 修改一个文件的时间戳,如果文件不存在会触发创建文件。
  • vi 和 nano 可以用来编辑文件。
  • mkdir 创建目录,rmdir创建空目录
  • tar 打包/解包
    • -c 是表示产生新的包;
    • -f 指定包的文件名;
    • -v 显示执行过程;
    • -z 以zip压缩;案例:** tar -zcvf log.tar.gz *.log  **
    • -x 解包

在选项f之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加z选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包;如果加j选项,则以.tar.bz2来作为tar包名。

man命令和指令的help参数的区别

man比较详细,会把全部的选项与使用方法等详细信息都展现出来。而help是选项帮助命令,顾名思义你可以把单独某个命令的某个选项列出来,方便快捷很多,省去了man当中查找的繁琐,但是help只支持shell的内部命令。内部命令即存储在shell内部可以直接调用的一些简单命令,比如说ls,pwd等

管道命令

管道(Pipeline)的作用是在命令和命令之间,传递数据。比如说一个命令的结果,就可以作为另一个命令的输入。我们了解了进程,所以这里说的命令就是进程。更准确地说,管道在进程间传递数据。
管道和重定向很像,但是管道是一个连接一个进行计算,重定向是将一个文件的内容定向到另一个文件,这二者经常会结合使用。

重定向符号

> 符号叫作覆盖重定向,>> 叫作追加重定向,> 每次都会把目标文件覆盖,>> 会在目标文件中追加。

管道符(匿名管道)

管道符是“|”,将前一个命令执行的结果传递给后一个命令

中间结果

管道一个接着一个,是一个计算逻辑。有时候我们想要把中间的结果保存下来,这就需要用到tee指令。tee指令从标准输入流中读取数据到标准输出流。
举个栗子:env | tee xxx | grep “匹配的字符”

网络命令

SSH

SSH(Secure Shell)是一个提供数据通信安全、远程登录、远程指令执行等功能的安全网络协议

# ssh [端口号] 用户名@远程服务器地址
sftp [-P port] username@remote_ip

sftp文件传输协议

SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种基于可靠数据流(data stream),提供文件存取和管理的网络传输协议,因为 SFTP 是基于 SSH 协议的,所以默认的身份认证方法与 SSH 协议保持一致。

sftp 用户名@远程服务器地址

SFTP 解释器中预置了常用的命令,但是没有自带的 Bash 来得丰富。支持常见的文件操作命令:cd、ls、mkdir、pwd等,使用 ! 可以直接运行 Shell 中的指令。
以上的命令都是用来操作远程服务器的,如果想要操作本地目录呢?只需要在每个命令前添加 l 即可,例如显示本地操作目录下的文件:

sftp> lls

拉取文件

使用 get 命令可以从远程服务器拉取文件到本地: sftp> get remoteFile [newName]

  • 使用 -r 参数可以拉取整个目录

上传文件

使用 put 命令可以从本地上传文件到服务器:sftp> put localFile

  • 同样的,可以使用 -r 参数来上传整个目录,但是有一点要注意,如果服务器上不存在这个目录需要首先新建

scp命令

用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。
复制文件,从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可

#scp 文件路径 用户名@远程服务器地址:远程服务器目录或文件名 
scp local_file remote_username@remote_ip:remote_folder 
或者 
scp local_file remote_username@remote_ip:remote_file 

复制目录:scp -r local_folder remote_username@remote_ip:remote_folder

net-tools工具集

比如常用的:netstat -ntlp | grep 端口,查看占用某端口的程序

-a或--all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同

ifconfig 配置和显示Linux系统网卡的网络参数

如何查看正在 TIME_WAIT 状态的连接数量?

netstat -an | grep TIME_WAIT | wc -l

iproute2工具集

iproute2是linux下管理控制TCP/IP网络和流量控制的新一代工具包,旨在替代老派的工具链net-tools,即大家比较熟悉的ifconfig,arp,route,netstat等命令。

网络管理工具ip命令

  • ip addr 显示网卡ip信息
  • ip route 显示系统路由

Linux常用命令操作【入门级】

查询 socket 的有关统计信息

ss命令 用来显示处于活动状态的套接字信息,它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
比如:ss -ntlp 它可以显示和netstat类似的内容。常用参数和netstat类似

和net-tools对比

功能 老用法 新用法
路由表 netstat -r/route ip route
网络接口统计信息 netstat -i ip -s link
组播 netstat -g ip maddr
网络接口地址和链路 ifconfig ip addr /ip link
ARP arp ip neigh
隧道 iptunnel ip tunnel
网络连接 netstat -a ss

网络管理命令

service network status 查看当前活跃网卡

查看网关: route 加 -n 不解析主机名

端口登录: telnet 命令的格式为 telnet+空格+IP地址/主机名称   端口号

网络故障排除命令

测试网络畅通: ping,想知道本机到某个网站的网络延迟,就可以使用ping指令。

查询域名解析: nslookup + 域名**

网络配置文件

  • ifcfg-eth0 网卡配置文件
  • /etc/hosts 配置主机名

其他网络命令

查看主机名: hostname
修改主机名: hostnamectl set-hostname xxx
host: 查看dns解析后的ip地址;
wget: 下载命令;例如:

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

用户和权限管理指令

用户和组

为了方便分配每个用户的权限,Linux 还支持组 (Group)账户。组账户是多个账户的集合,组可以为成员们分配某一类权限。每个用户可以在多个组,这样就可以利用组给用户快速分配权限,同时Root 账户也叫作超级管理员。

-rw-------. 1 root root 1337 9月   3 15:59 anaconda-ks.cfg
类型  权限    所属用户 所属组

Linux 还对文件进行了权限抽象。Linux 中一个文件可以设置下面 3 种权限:

  • 读权限(r = 4):控制读取文件。
  • 写权限(w = 2):控制写入文件。
  • 执行权限(x = 1):控制将文件执行,比如脚本、应用程序等。

然后每个文件又可以从 3 个维度去配置上述的 3 种权限:

  • 用户维度。每个文件可以所属 1 个用户,用户维度配置的 rwx 在用户维度生效;
  • 组维度。每个文件可以所属 1 个分组,组维度配置的 rwx 在组维度生效;
  • 全部用户维度。设置对所有用户的权限。

因此 Linux 中文件的权限可以用 9 个字符,3 组rwx描述:第一组是用户权限,第二组是组权限,第三组是所有用户的权限。然后用-代表没有权限。比如rwxrwxrwx代表所有维度可以读写执行。rw–wxr-x代表用户维度不可以执行,组维度不可以读取,所有用户维度不可以写入。

文件被创建后的权限通常是: rw-rw-r–,也就是用户、组维度不可以执行,所有用户可读。

用户配置文件: /etc/passwd

目录权限: x(进入目录)、rx(显示目录中的文件名)、wx(修改目录中的文件名)

用户命令

创建用户: useradd 用户名

  • -g 组名,创建用户的时候指定用户组

删除用户: userdel 用户名

  • -r 删除用户家目录

修改密码: passwd 用户名

创建组: groupadd 组名

用户切换: su

用来以其他身份来执行命令: sudo,预设的身份为root

修改文件权限

可以用chmod修改文件权限,chmod( change file mode bits),设置权限也是rwx,只不过在 Linux 中是用三个连在一起的二进制位来表示。

u  # 操作对象简称,用户user,文件或目录的所有者。
g  # 操作对象简称,同组用户group,文件或目录所属群组
o  # 操作对象简称,其它用户others
a  # 操作对象简称,所有用户all,系统默认使用此项
# 设置foo可以执行
chmod +x ./foo
# 不允许foo执行
chmod -x ./foo
# 也可以同时设置多个权限
chmod +rwx ./foo
# 设置rwxrwxrwx (111111111 -> 777)
chmod 777 ./foo
# 为文件f01设置自己可以执行,组员可以写入,其他用户只能读的权限
chmod u=rwx,g=rw,o=r f01

因为rwx在 Linux 中用相邻的 3 个位来表示。比如说111代表rwx,101代表r-x。而rwx总共有三组,分别是用户权限、组权限和全部用户权限。也就是可以用111111111的9 个 1 代表rwxrwxrwx。又因为111的10 进制是 7,因此当需要一次性设置用户权限、组权限和所有用户权限的时候,我们经常用数字表示。

修改文件属主、属组

有时候我们需要修改文件所属用户和所属组,这个时候会使用chown指令。

chown bar ./foo
修改foo文件所属的用户为bar
chown :group1 ./foo
修改foo文件所属的组为group1
chown bar:group1 ./foo
同时修改

扩展:如果一个目录是只读权限,那么这个目录下面的文件还可写吗?
答:可以写,因为linux中目录也是文件,目录文件中存放的只是目录下文件的清单,并不包括内容,但是想要创建新文件就会出现报错,因为创建新文件也需要改目录文件。

Vim

四种模式:正常模式、插入模式、命令模式、可视模式
进入可视模式的方式

  • v 字符可视模式
  • V 行可视模式
  • ctrl+v 块可视模式

全局设置文件:/etc/vimrc

基本操作

插入:
i(当前位置),I(头),a(后一个位置),A(尾),o(下一行),O(上一行)

移动:
h(左移)j(上)k(下)l(右移)

复制/剪切/粘贴:

  • yy 复制一行、dd 剪切一行、3yy 复制三行
  • y$ 复制当前位置到结尾
  • p 粘贴

撤销: u

行号: 显示行号  :set nu 和 关闭行号 :set nonu

保存/退出: :w:w!:q:q!

执行外部命令: :!

跳转

跳转指定行: 行号 + shift + g

跳到第一行: gg

最后一行 : shift + g

查找/替换

  • / + 查找的内容,内容会被高亮
    • :noh  关闭高亮
  • n 移动到下一个匹配的内容,shift + n 移动到上一个匹配的内容
  • s 和 %s,前者只替换光标所在行,后者全文替换
    • 案例::%s/x/X,将全文中的x替换成X
    • 在s追加3,5,表示3-5行之间

软件安装

Centos、RedHast使用yum包管理器,安装包格式为rpm
Debian、Ubuntu使用apt包管理器,安装包格式为deb

yum命令常用选项

  • install 安装软件包
  • remove 卸载软件包
  • list | grouplist 查看软件包
  • update 升级软件包
  • yum makecache 重建缓存

系统管理

  • ps 查看进程
    • ps -ef | hrep xxx 查看某些进程的PID
  • top 查看系统CPU负载,进程等,我们也可以 sudo apt install htop 查看的更加清晰一点
    • -p 指定进程
    • shift + p:根据CPU使用率排序
    • shift + m:根据内存占用排序
  • 当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行 command &
    • 但此时如果这个进程有输出,还是会显示出来。所以可以考虑把标准输出重定向到某个文件去,如:command >output &
  • jobs 显示所有作业
  • history [n] 用于显示历史命令,n表示显示最近的多少条
  • 关机:init 0shutdown -h now
  • 重启:reboot

进程间通信

  • kill -l 列出所有信号名称
  • kill -2 和 ctrl + c等同
  • kill -9 立即结束,强制结束

服务管理工具

  • service
    • centos6及其以前版本使用的是service
  • systemctl start | stop | restart | reload | enable | disable 服务名
    • systemctl 命令强化了 service,并兼容它

内存使用率查看

  • free
    • -h 适合人类阅读的形式

系统综合状态查看

  • top
  • sar 命令
    • 查看CPU: sar -u 1 10
    • 查看内存: sar -r 1 10
    • 查看磁盘: sar -b 1 10
    • 查看进程: sar -q 1 10

平均负载

uptime 查看Linux系统负载信息

Linux常用命令操作【入门级】
从上图中我们可以看到过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average)。
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。所以,它不仅包括了正在使用 CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。

最后别忘了点赞哦!!!🐱‍👓

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15194.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!