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

关机:init 0 、 shutdown -h now
重启:reboot

文件

linux中一切皆文件

常见目录介绍

  • / 根目录
  • /root root用户的家目录
  • /home/username 普通用户的家目录
  • /etc 配置文件目录
  • /bin 命令目录
  • /sbin 管理命令目录
  • /usr/bin /usr/sbin系统预装的其他命令

绝对路径

目标文件的绝对路径(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 用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令

操作

  • 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 “匹配的字符”

网络命令

网络管理命令

网络状态查看命令

  • ifconfig 配置和显示Linux系统网卡的网络参数
  • ip addr 显示网卡ip信息
  • ip route 显示系统路由
  • service network status 查看当前活跃网卡

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

网络故障排除命令

测试网络畅通: ping,想知道本机到某个网站的网络延迟,就可以使用ping指令。
查询域名解析: nslookup + 域名

查看端口占用

  1. netstat -ntlp | grep 端口
    • -n是将一些特殊的端口号用数字显示;
    • -t是指看 TCP 协议;
    • -l是只显示连接中的连接;
    • -p是显示进程名称;
  2. ss -ntlp 它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

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

网络配置文件

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

查看主机名: hostname
修改主机名: hostnamectl set-hostname xxx

host: 查看dns解析后的ip地址;
wget: 下载命令;
ssh: 远程登录的指令;
scp: 远程拷贝文件的指令;

用户和权限管理指令

用户和组

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

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

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,系统默认使用此项
1234
# 设置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
12345678910

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

修改文件属主、属组

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

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

扩展:如果一个目录是只读权限,那么这个目录下面的文件还可写吗?
答:可以写,因为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包管理器,安装包格式为rmp
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 指定进程
  • 当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行 command &。
    • 但此时如果这个进程有输出,还是会显示出来。所以可以考虑把标准输出重定向到某个文件去,如:command >output &
  • jobs 显示所有作业
  • history n: 用于显示历史命令,n表示显示最近的多少条
  • 关机: init 0 、 shutdown -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 的进程。

原创文章,作者:Zhang Miao Miao,如若转载,请注明出处:https://www.yidc.net/archives/12124