大话Linux——必会的基本命令

简介: Linux全称GNU/Linux,是一种免费使用和自由传播的 类UNIX 操作系统,其内核由 林纳斯·本纳第克特·托瓦兹 于1991年10月5日首次发布,它主要受到 Minix 和Unix思想的启发,是一个基于 POSIX 的多用户、 多任务 、支持 多线程 和多 CPU 的操作系统。 它能运行主要的 Unix 工具软件、应用程序和网络协议。

大话Linux——必会的基本命令

1、课前小菜

1、RPM软件包管理命令

  • 安装软件的命令格式 rpm -ivh filename.rpm
  • 升级软件的命令格式 rpm -Uvh filename.rpm
  • 卸载软件的命令格式 rpm -e filename.rpm
  • 查询软件描述信息的命令格式 rpm -qpi filename.rpm
  • 列出软件文件信息的命令格式 rpm -qpl filename.rpm
  • 查询文件属于哪个 RPM 的命令格式 rpm -qf filename

2、YUM软件包管理命令

  • yum repolist all 列出所有仓库
    yum list all 列出仓库中所有软件包
    yum info 软件包名称 查看软件包信息
    yum install 软件包名称 安装软件包
    yum reinstall 软件包名称 重新安装软件包
    yum update 软件包名称 升级软件包
    yum remove 软件包 移除软件包
    yum clean all 清除所有仓库缓存
    yum check-update 检查可更新的软件包
    yum grouplist 查看系统中已经安装的软件包组
    yum groupinstall 软件包组 安装指定的软件包组
    yum groupremove 软件包组 移除指定的软件包组
    yum groupinfo 软件包组 查询指定的软件包组信息

3、systemctl管理服务的常用命令

  • systemctl start foo.service 启动服务
    systemctl restart foo.service 重启服务
    systemctl stop foo.service 停止服务
    systemctl reload foo.service 重新加载配置文件(不终止服务)
    systemctl status foo.service 查看服务状态
    systemctl enable foo.service 开机自动启动
    systemctl disable foo.service 开机不自动启动
    systemctl is-enabled foo.service 查看特定服务是否为开机自动启动
    systemctl list-unit-files --type=service 查看各个级别下服务的启动与禁用情况

2、新手必须掌握的Linux常用命令

1.1、echo命令

[root@chenstudy ~]# echo chen
chen
[root@chenstudy ~]# echo $SHELL
/bin/bash

1649514887392

1.2、date命令

# 查看当前系统时间
[root@chenstudy ~]# date
2022年 04月 09日 星期六 22:32:21 CST
# 按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间
[root@chenstudy ~]# date "+%Y-%m-%d %H:%M:%S"
2022-04-09 22:32:46
# 将当前系统的时间设置为2022年04月0922点36分
[root@chenstudy ~]# date -s "20220409 22:36:00"
2022年 04月 09日 星期六 22:36:00 CST
# 再次使用date查看系统当前时间
[root@chenstudy ~]# date
2022年 04月 09日 星期六 22:36:11 CST
# dtae "+j" 用来查看今天是当年中的第几天
[root@chenstudy ~]# date "+%j"
099

1649515261944

1.3、wget命令

# wget 命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。
[root@chenstudy ~]# cd /home
[root@chenstudy home]# wget http://www.linuxprobe.com/docs/LinuxProbe.pdf

-b # 后台下载模式
-P # 下载到指定目录
-t # 最大尝试次数
-c # 断点续传
-p # 下载页面内所有资源,包括图片、视频等
-r # 递归下载

# wget 命令递归下载 www.linuxprobe.com 网站内的所有页面数据以及文件,下载完后会自动保存到当前路径下一个名为 www.linuxprobe.com 的目录中
[root@chenstudy home]# wget -r -p http://www.linuxprobe.com,

1649515964579

1.4、ps命令

  • ps 命令用于查看系统中的进程状态,格式为“ps [参数]”
  • 参数

    • -a # 显示所有进程(包括其他用户的进程)
    • -u # 用户以及其他详细信息
    • -x # 显示没有控制终端的进程
  • Linux的进程分为五个进程状态 运行、中断、不可中断、僵死与停止

    • R(运行):进程正在运行或在运行队列中等待。
    • S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
    • D(不可中断):进程不响应系统异步信号,即便用 kill 命令也不能将其中断。
    • Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数后将进程释放。
    • T(停止):进程收到停止信号后停止运行。
[root@chenstudy home]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 125504  3440 ?        Ss   3月24   0:15 /usr/lib/systemd/systemd --switched-root --system --de
root         2  0.0  0.0      0     0 ?        S    3月24   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   3月24   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    3月24   0:18 [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S    3月24   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    3月24   0:00 [rcu_bh]

# USER         进程的所有者
# PID          进程ID号
# %CPU         运算器占用率
# %MEM         内存占用率
# VSZ        虚拟内存使用量(单位是 KB)
# RSS         占用的固定内存量(单位是KB)
# TTY        所在终端
# STAT        进程状态
# START        被启动的时间
# TIME         实际使用CPU的时间
# COMMAND    命令名称与参数

1649516165430

1.5、top 命令

  • top 命令用于动态地监视进程活动与系统负载等信息,其格式为 top
[root@chenstudy home]# top

1649578895585

  • top 命令执行结果的前 5 行为系统整体的统计信息,其所代表的含义如下:

    • 第 1 行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为 1 分钟、5分钟、15 分钟内的平均值,数值越小意味着负载越低)
    • 第 2 行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数
    • 第 3 行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等
    • 第 4 行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量
    • 第 5 行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量

1.6、pidof和kill命令

  • pidof 命令用于查询某个指定服务进程的 PID 值,格式为“pidof [参数 服务名称]”
  • kill 命令用于终止某个指定 PID 的服务进程,格式为“kill [参数 进程 PID]”
  • killall 命令用于终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数 进程名称]”
# 查询本机上 sshd 服务程序的 PID
[root@chenstudy ~]# pidof sshd
24486 1156
[root@chenstudy ~]# kill 1156

[root@chenstudy ~]# pidof httpd
[root@chenstudy ~]# killall httpd

1649579588076

1.7、ifconfig命令

  • ifconfig 命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备 参数]”
[root@chenstudy ~]# ifconfig

1649949443485

1.8、uname 命令

  • uname 命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”
  • 查看当前系统版本的详细信息,则需要查看 redhat-release 文件,
[root@chenstudy ~]# uname -a
Linux chenstudy 3.10.0-1160.53.1.el7.x86_64 #1 SMP Fri Jan 14 13:59:45 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[root@chenstudy etc]# cat centos-release
CentOS Linux release 7.9.2009 (Core)
[root@chenstudy etc]# 

1649584235212

1649584267938

1.9、uptime和free命令

  • uptime 用于查看系统的负载信息,格式为 uptime

    • 它可以显示当前系统时间、系统已运行时间、启用终端数量以 及平均负载值等信息
  • free 用于显示当前系统中内存的使用量信息,格式为“free [-h]”
[root@chenstudy ~]# uptime
 23:11:18 up 17 days,  6:46,  2 users,  load average: 0.05, 0.22, 0.28
[root@chenstudy ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        347M        192M        612K        1.3G        1.3G
Swap:            0B          0B          0B
# total         内存总量
# used             已用量
# free             可用量
# shared        进程共享的内存量
# buff/cache    磁盘缓存的内存量/缓存的内存量
# available        可利用的内存量

1649603596527

1.10、who和last命令

  • who 用于查看当前登入主机的用户终端信息,格式为“who [参数]”
[root@chenstudy ~]# who
root     pts/0        2022-04-10 20:07 (117.158.163.68)
root     pts/1        2022-04-10 20:07 (117.158.163.68)
[root@chenstudy ~]# 

1649604289613

执行 who 命令的结果

登录的用户名 终端设备 登录到系统的时间
root pts/0 2022-04-10 20:07 (117.158.163.68)
root pts/1 2022-04-10 20:07 (117.158.163.68)
  • last 命令用于查看所有系统的登录记录,格式为“last [参数]”
# 使用 last 命令可以查看本机的登录记录由于这些信息都是以日志文件的形式保存在系统中,因此黑客可以很容易地对内容进行篡改
[root@chenstudy ~]# last
root     pts/1        117.158.163.68   Sun Apr 10 20:07   still logged in   
root     pts/0        117.158.163.68   Sun Apr 10 20:07   still logged in   
root     pts/1        117.158.163.67   Sun Apr 10 15:12 - 19:27  (04:14)    
root     pts/0        117.158.163.67   Sun Apr 10 15:12 - 19:27  (04:14)    
root     pts/1        117.158.163.67   Sun Apr 10 08:29 - 12:27  (03:58)    
root     pts/0        117.158.163.67   Sun Apr 10 08:29 - 12:27  (03:58)    
root     pts/1        117.158.163.79   Sat Apr  9 22:25 - 23:49  (01:24)    
root     pts/0        117.158.163.79   Sat Apr  9 22:25 - 23:49  (01:24)    
root     pts/1        117.158.163.78   Thu Apr  7 08:39 - 08:42  (00:03)    
root     pts/0        117.158.163.78   Thu Apr  7 08:39 - 08:42  (00:03)    
root     pts/1        117.158.163.78   Wed Apr  6 16:22 - 20:14  (03:52)    
root     pts/3        117.158.163.78   Wed Apr  6 15:45 - 20:14  (04:28)    
root     pts/4        117.158.163.78   Wed Apr  6 15:38 - 15:40  (00:01)    

1649604659050

1.11、history和sosreport 命令

  • history 命令用于显示历史执行过的命令,格式为“history [-c]”

    • -c会清空所有的命令历史记录
  • sosreport 命令用于收集系统配置及架构信息并输出诊断文档,格式为 sosreport
[root@chenstudy ~]# history
    1  clear
    2  cd /
    3  uname -f
    4  clear
    5  uname -r
    6  clear
    7  cat /etc/os-release
# 历史命令会被保存到用户家目录中的.bash_history 文件中
[root@chenstudy ~]# cat ~/.bash_history
clear
cd /
uname -f
clear
uname -r
clear
cat /etc/os-release
# 清空当前用户在本机上执行的Linux命令历史记录
[root@chenstudy ~]# history -c

1649605037351

1649605155053

1649605214267

1649605388194

2.1、pwd、cd、ls命令

  • pwd 命令用于显示用户当前所处的工作目录,格式为“pwd [选项]”
  • cd 命令用于切换工作路径,格式为“cd [目录名称]”
  • ls 命令用于显示目录中的文件信息,格式为“ls [选项 文件] ”
[root@chenstudy ~]# pwd
/root
[root@chenstudy ~]# cd /home
[root@chenstudy home]# ls
ceshi  chen  chen.java  dockerfile  LinuxProbe.pdf  mysql  test.java
# 使用 ls 命令的“-a”参数看到全部文件(包括隐藏文件)
# 使用“-l”参数可以查看文件的属性、大小等详细信息
[root@chenstudy home]# ls -al
总用量 17288
drwxr-xr-x.  6 root root     4096 4月   9 22:52 .
dr-xr-xr-x. 18 root root     4096 3月  24 16:24 ..
drwxr-xr-x   2 root root     4096 4月   2 09:29 ceshi
drwxr-xr-x   3 root root     4096 4月   6 15:32 chen
-rw-r--r--   1 root root        0 3月  30 23:26 chen.java
drwxr-xr-x   2 root root     4096 4月   5 10:54 dockerfile
-rw-r--r--   1 root root 17676281 9月  22 2020 LinuxProbe.pdf
drwxr-xr-x   4 root root     4096 4月   2 09:49 mysql
-rw-r--r--   1 root root        0 3月  30 23:28 test.java
# 查看目录属性信息,则需要额外添加一个-d 参数
[root@chenstudy home]# ls -ld /etc
drwxr-xr-x. 78 root root 4096 3月  29 18:00 /etc
[root@chenstudy home]# 

1649657666969

2.2、touch、mkdir、cp命令

  • touch 命令用于创建空白文件或设置文件的时间,格式为“touch [选项 文件]”

    • b-a 仅修改“读取时间”(atime)
    • -m 仅修改“修改时间”(mtime)
    • -d 同时修改 atime 与 mtime
[root@chenstudy home]# ls
ceshi  chen  chen.java  dockerfile  LinuxProbe.pdf  mysql  test.java
[root@chenstudy home]# ls -l chen.java 
-rw-r--r-- 1 root root 54 4月  11 14:24 chen.java
[root@chenstudy home]# echo "System.out.println("Hello");" >> chen.java 
[root@chenstudy home]# ls -l chen.java 
-rw-r--r-- 1 root root 81 4月  11 14:25 chen.java
[root@chenstudy home]# touch -d "2021-06-28 15:44" chen.java 
[root@chenstudy home]# ls -l chen.java 
-rw-r--r-- 1 root root 81 6月  28 2021 chen.java
[root@chenstudy home]# 

1649658424973

  • mkdir 命令用于创建空白的目录,格式为“mkdir [选项] 目录”

    • -p 参数来递归创建出具有嵌套叠层关系的文件目录
[root@chenstudy home]# mkdir linux
[root@chenstudy home]# cd linux/
[root@chenstudy linux]# mkdir -p a/b/c
[root@chenstudy linux]# cd a/
[root@chenstudy a]# cd b/
[root@chenstudy b]# 

1649658572337

  • cp 命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”

    • -p 保留原始文件的属性
    • -d 若对象为“链接文件”,则保留该“链接文件”的属性
    • -r 递归持续复制(用于目录)
    • -i 若目标文件存在则询问是否覆盖
    • -a 相当于-pdr(p、d、r 为上述参数)
[root@chenstudy linux]# touch install.log
[root@chenstudy linux]# cp install.log x.log
[root@chenstudy linux]# ls
a  install.log  x.log
[root@chenstudy linux]# 

1649667421150

2.3、mv、rm、dd和file命令

  • mv 命令用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”
[root@chenstudy linux]# mv x.log linux.log
[root@chenstudy linux]# ls
a  install.log  linux.log
[root@chenstudy linux]# 

1649667665827

  • rm 命令用于删除文件或目录,格式为“rm [选项] 文件”
[root@chenstudy linux]# rm install.log 
rm:是否删除普通空文件 "install.log"?y
[root@chenstudy linux]# ls
a  linux.log
[root@chenstudy linux]# rm -f linux.log 
[root@chenstudy linux]# ls
a
# 删除目录
[root@chenstudy linux]# rm -rf a
[root@chenstudy linux]# ls
[root@chenstudy linux]# 

1649667889128

  • dd 命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”

    • if 输入的文件名称
    • of 输出的文件名称
    • bs 设置每个“块”的大小
    • count 设置要复制“块”的个数
# /dev/zero 设备文件中取出一个大小为 560MB 的数据块,保存成名为 560_file 的文件
[root@chenstudy home]# dd if=/dev/zero of=560_file count=1 bs=560MB
记录了1+0 的读入
记录了1+0 的写出
560000000字节(560 MB)已复制,4.66672 秒,120 MB/秒
[root@chenstudy home]# 
# dd命令可以把光驱设备中的光盘制作成 iso 格式的镜像文件
[root@chenstudy home]#  dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso
7311360+0 records in
7311360+0 records out
3743416320 bytes (3.7 GB) copied, 370.758 s, 10.1 MB/s
  • file 命令用于查看文件的类型,格式为“file 文件名”
[root@chenstudy home]# file chen.java 
chen.java: ASCII text
[root@chenstudy home]# file /home/dockerfile/
/home/dockerfile/: directory
[root@chenstudy home]# 

1649668639856

2.4、tar、grep和find命令

  • tar 命令用于对文件进行打包压缩或解压,格式为“tar [选项 文件]”

    • -c 创建压缩文件
    • -x 解开压缩文件
    • -t 查看压缩包内有哪些文件
    • -z 用 Gzip 压缩或解压
    • -j 用 bzip2 压缩或解压
    • -v 显示压缩或解压的过程
    • -f 目标文件名
    • -p 保留原始的权限与属性
    • -P 使用绝对路径来压缩
    • -C 指定解压到的目录
[root@chenstudy home]# tar -czvf etc.tar.gz /etc 
tar: 从成员名中删除开头的“/”
/etc/
/etc/depmod.d/
/etc/depmod.d/dist.conf
/etc/sudoers
/etc/gss/
/etc/gss/mech.d/
/etc/anacrontab
/etc/wgetrc
/etc/python/
# 将打包后的压缩包文件指定解压到/root/etc 目录中
[root@chenstudy home]# mkdir /root/etc
[root@chenstudy home]# tar xzvf etc.tar.gz -C /root/etc

1649689372407

1649689899210

  • grep 命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项 文件]”

    • -b 将可执行文件(binary)当作文本文件(text)来搜索
    • -c 仅显示找到的行数
    • -i 忽略大小写
    • -n 显示行号
    • -v 反向选择—仅列出没有“关键词”的行
[root@chenstudy home]# grep /sbin/nologin /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

1649690102945

  • find 命令用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”

    • -name 匹配名称
    • -perm 匹配权限(mode 为完全匹配,-mode 为包含即可)
    • -user 匹配所有者
    • -group 匹配所有组
    • -mtime -n +n 匹配修改内容的时间(-n 指 n 天以内,+n 指 n 天以前)
    • -atime -n +n 匹配访问文件的时间(-n 指 n 天以内,+n 指 n 天以前)
    • -ctime -n +n 匹配修改文件权限的时间(-n 指 n 天以内,+n 指 n 天以前)
    • -nouser 匹配无所有者的文件
    • -nogroup 匹配无所有组的文件
    • -newer f1 !f2 匹配比文件 f1 新但比 f2 旧的文件
    • --type b/d/c/p/l/f 匹配文件类型(后面的字幕参数依次表示块设备、目录、字符设备、管道、 链接文件、文本文件)
    • -size 匹配文件的大小(+50KB 为查找超过 50KB 的文件,而-50KB 为查找小于 50KB 的文件)
    • -prune 忽略某个目录
    • -exec …… {}\; 后面可跟用于进一步处理搜索结果的命令(下文会有演示)
[root@chenstudy home]# find /etc -name "host*" -print
/etc/hosts.allow
/etc/hosts.deny
/etc/host.conf
/etc/hostname
/etc/cloud/templates/hosts.suse.tmpl
/etc/cloud/templates/hosts.debian.tmpl
/etc/cloud/templates/hosts.freebsd.tmpl
/etc/cloud/templates/hosts.redhat.tmpl
/etc/selinux/targeted/active/modules/100/hostname
/etc/hosts
# 要在整个系统中搜索权限中包括 SUID 权限的所有文件只需使用-4000 即可
# CentOS 报错未知断言 Red Hat里可以
[root@chenstudy home]# find / -perm -4000 -print
/usr/bin/fusermount
/usr/bin/su
/usr/bin/umount
/usr/bin/passwd
/usr/sbin/userhelper
/usr/sbin/usernetctl 

1649690531957

目录
相关文章
|
5天前
|
NoSQL 关系型数据库 MySQL
Linux学习记录---(1、基本命令)
该博客文章提供了Linux系统中基本命令的使用记录,包括文件和目录操作、Redis服务管理、MySQL数据库操作以及Tomcat服务器的启动和检查。
Linux学习记录---(1、基本命令)
|
3天前
|
Linux
会玩这10个Linux命令,一定是个有趣的IT男!
会玩这10个Linux命令,一定是个有趣的IT男!
|
6天前
|
运维 Ubuntu Linux
Linux系统之ncdu命令的基本使用
【8月更文挑战第8天】Linux系统之ncdu命令的基本使用
14 2
Linux系统之ncdu命令的基本使用
|
12天前
|
数据可视化 Linux 测试技术
7zip压缩工具的Linux命令
本文介绍了如何在Linux系统中使用7zip压缩工具,包括通过brew安装、使用基本命令进行文件压缩、解压、列出存档内容、测试存档完整性以及进行性能基准测试等操作。
49 3
7zip压缩工具的Linux命令
|
2天前
|
安全 Linux 开发者
Linux笔记之ldd命令详解
`ldd`命令是Linux环境下一个非常实用的工具,用于显示一个程序运行时所需的共享库依赖。它帮助开发者和系统管理员快速诊断程序运行问题,特别是在处理"找不到库文件"或者"错误的库文件版本"等错误时。然而,出于安全的考虑,对于不信任的可执行文件,应该慎用 `ldd`命令,可以考虑使用其他工具如 `objdump`。总的来说,懂得如何妥善且安全地使用 `ldd`,对于维护一个稳定和高效的Linux系统来说,是非常重要的。
18 9
|
2天前
|
Linux Shell
linux命令
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
3天前
|
移动开发 运维 网络协议
运维必备 | Linux netstat命令详解
运维必备 | Linux netstat命令详解
|
3天前
|
Linux
真香~ Linux vi常用命令汇总!
真香~ Linux vi常用命令汇总!
|
4天前
|
Linux Shell
linux命令
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
7天前
|
运维 安全 Linux
【超实用秘籍】Linux文件传输新高度:10个scp命令让你瞬间变身文件传输达人,从此告别繁琐操作!
【8月更文挑战第13天】文件传输是运维工作的核心部分,尤其对Linux用户来说,了解高效且安全的传输方法非常重要。本文介绍10种scp命令的应用技巧,涵盖基础文件传输、密钥认证、目录复制等场景,助你灵活运用这一基于SSH协议的安全工具。从简单的文件传输到复杂的多主机文件迁移,scp都能轻松应对。通过本文的学习,你将能更熟练地使用scp命令,提高工作效能。
27 6