linux常用指令

260 阅读13分钟

一、拍摄快照

VMware下直接右键选择快照就可以生成快照了。

image-20220208214154887

使用快照管理器可以看到当前位置和快照的情况。

image-20220208214424580

三、Vi和Vim

Vi和Vim是Linux系统自带的编辑器,和Windows的txt有点像。

Vim包含三种模式:

  • 正常模式:一般是用来查看的,当然也可以删除和复制粘贴;
  • 插入模式:一般使用点击i,I,o,O,a,A,r,R就可以进入插入模式;
  • 命令行模式:一般是用来完成读取、存盘、替换、离开vim、显示行号等操作的;

模式切换图:

image-20220208215022392
  • 拷贝当前行的指令:yy;需要输入p粘贴上
  • 拷贝当前行向下5行的指令:5yy;
  • 删除当前行的指令:dd;
  • 删除当前行下5行的指令:5dd;
  • 在文件中查找某个单词:在命令行模式下(/之下)输入需要查找的单词,使用n查找下一个匹配的单词,比如查找public,就输入:/public
  • 文件显示行号:在命令行下使用冒号:set nu,不显示行号在命令行下使用冒号:set nonu
  • 跳到文件的首部和尾部:在正常模式下使用G跳到文件尾,使用gg跳到文件头,可以通过编辑/etc/profile来测试
  • 一个文件写入内容,如果想撤销,需要在正常模式下输入小写u
  • 跳到指定行下,为了方便可以显示行号:set nu,然后在正常模式下输入想要跳转到的行号,再按shift + g

三、开机、重启,注销

  1. shutdown -h now:是立刻关机
  2. shutdown -h 1:1分钟以后关机
  3. shutdown -r now: 现在重启计算机
  4. halt:也是关机的意思
  5. reboot:重启计算机
  6. sync:把内存的数据同步到磁盘

四、用户管理

1、用户相关

  • 添加用户:useradd 名称,这个时候会在/home目录下创建一个同名的文件夹
  • 添加用户,并在指定位置创建同名文件夹:useradd -d 文件夹位置 用户名称
  • 修改密码:passwd 用户名,回车后可以输入密码
  • 删除用户:userdel 名称,这里的家目录是不会被删除的,一般建议不删除家目录,因为可能有一些文件需要保留,避免丢失
  • 删除用户以及家目录: userdel -r 用户名
  • 查询用户:id 用户名 [root@hspEdu01 jerry]# id tom uid=1000(tom) gid=1000(tom) 组=1000(tom),这里会显示用户id、组id和组的信息
  • 切换用户:可以通过这个指令切换到更高、更低权限的用户,su - 切换的用户名
  • 切换回来:使用logout/exit指令切换
  • 查看当前用户是谁:whoami

2、组相关

  • 新增组:groupadd 组名
  • 删除组:groupdel 组名
  • 添加用户时带上组:useradd -g 用户组 用户名,比如groupadd nba,useradd -g nba Jordan
  • 修改用户的组:usermod -g 用户组 用户名

五、常用指令

1、七种运行级别

  • 0:关机
  • 1:单用户,用于找回丢失密码
  • 2:多用户状态没有网络服务
  • 3:多用户状态有网络服务【常用】
  • 4:系统未使用保留给用户
  • 5:图形界面【常用】
  • 6:系统重启

使用init指令就可以指定相应的运行级别,比如init 0就是关机

CentOS 7之后可以通过指令设置默认允许级别:

  • systemctl set-default
  • systemctl get-default

比如常用的3级别是multi-user.target;5级别是graphical.target。

[root@hspEdu01 ~]# systemctl get-default
graphical.target

[root@hspEdu01 ~]# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@hspEdu01 ~]# reboot

2、帮助指令

help 命令:可以获取帮助信息,对于某个指令提供详细的用法信息

3、文件目录类指令

  • pwd:查看当前工作目录的绝对路径,试试su指令跳转用户,再使用pwd查看工作目录

  • ls:ls 【选项】【目录或文件】

    • -a:显示当前目录所有文件和目录,也包括隐藏的目录和文件
    • -l:以列表的方式显示信息
  • cd:这里注意一个即可->cd ~:是回到家目录,root,就回到/root

  • mkdir:用于创建目录,语法是mkdir【选项】 要创建的目录

    • -p:创建多级目录时使用,目录下套目录
  • rmdir:用于删除空目录,语法是rmdir【选项】 要删除的目录

    • rmdir删除的是空目录,目录中有内容不能删,需要使用rm -rf 去删除相应的目录
  • touch:创建空文件

  • cp:拷贝文件到指定目录,语法是cp【选项】source dest

    • -r:递归复制整个文件夹
    • -p:强制覆盖不提示的方法
  • rm:移除文件或目录

    • -r:一样是递归删除整个文件夹
    • -f:强制删除不提示
  • mv:移动文件与目录或重命名

    • mv oldNameFile newNameFile 在同一个目录下是重命名文件,这里需要指定好目录名
    • mv moveFile targetFolder 把一个文件移动到另一个目录去
  • cat:查看文件内容,cat和vim的区别是,cat不能改变文件信息,vim可以改变

    • cat【选项】要查看的文件,选项可以填写-n用于显示行号
  • more:这个指令基于vi编辑器,用于查看文件,相关操作,more 要查看的文件 image-20220210232426682

  • less:用于分屏查看文件内容,less 要查看的文件

image-20220210213211489
  • echo:输出内容到控制台,语法echo【选项】【输出内容】,比如:echo Hello World
  • head:用于显示文件的开头部分内容,默认显示文件前10行内容
    • 语法:head 文件名 查看文件头10行内容
    • 语法:head -n 5 文件名 查看文件头5行内容
  • tail:用于输出文件尾部的内容,默认显示文件尾10行
    • 语法:tail 文件名 查看文件后10行内容
    • 语法:tail -n 5 文件名 查看文件后5行内容
  • >表示重定向,>>表示追加
    • ls -l > 文件名 表示列表的内容覆盖写入某个文件中
    • ls -al >> 文件名 列表的内容追加到某个文件中,不覆盖
    • cat 文件1 > 文件2 将文件1的内容覆盖到文件2
    • echo "文本内容" >> 文件名 追加到文件中去
  • ln:软连接,基本语法是ln -s【原文件或目录】【软连接名】,功能是给某个文件创建一个软连接
[root@hspEdu01 home]# vim Hello.txt 
[root@hspEdu01 home]# ln -s Hello.txt /home/tom
  • history:查看已经执行过的指令
    • history:表示查看所有历史指令
    • history 10:表示查看最近10条
    • !5:执行编号为5的指令

4、时间日期类指令

  • date:显示当前时间
  • date "+%Y":显示当前年份
  • date "+%m":显示当前月份
  • date "+%d":显示当前是哪天
  • date "+%Y-%m-%d%H:%M:%S:" 显示年月日时分秒
  • date -s 字符串时间:date -s "2022-2-10 19:55:33"
  • cal:查看日历,语法cal【选项】:cal 2022 >> Hello.txt

5、搜索查找类指令

  • find:从指定目录向下递归遍历各个子目录,满足条件的文件显示在终端
    • find【搜索范围】【选项】

image-20220210231552252

  • locate:快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件
    • locate 搜索的文件,第一次使用需要使用updatedb指令创建locate库,定期要更新
  • grep |:过滤查找将一个命令的处理结果输出传递给后面的指令
    • grep【选项】查找内容 源文件

image-20220210232426682

6、压缩与解压类命令

  • gzip:压缩文件
  • gunzip:解压文件
  • zip:压缩文件,可以设置-r递归压缩
  • unzip:解压文件:可以设置-d 指定解压后的存放目录
  • tar:打包指令,打包文件变为.tar.gz,语法:tar【选项】 XXX.tar.gz

image-20220210233430947

六、组管理与权限管理

1、基本概念

所有者:谁创建的谁是所有者

所在组:就是文件所在的组

其他组:除文件的所在组和所有者的用户外,系统其他的用户都是文件的其他组

  • ls -ahl 文件名:查看所有者
  • chown 用户名 文件名:修改文件的所有者

操作一个组:

  • groupadd 组名:创建一个组
  • useradd -g 组名 用户名:创建用户放入到某个组中
  • ls -ahl 文件名:查看文件所在组
-rw-r--r--. 1 root root 2.1K 2月  10 19:57 Hello.txt
  • chgrp 组名 文件名:修改文件目录所在组

  • 改变用户的所在组:usermod指令

    • usermod -g 新组名 用户名
    • usermod -d 目录名 用户名:改变用户登录的初始目录,这里需要修改者有进入这个新目录的权限

2、权限管理介绍

[root@hspEdu01 ~]# ls -l
-rw-------. 1 root root 1883 24 2021 anaconda-ks.cfg
-rw-r--r--. 1 root root 1931 24 2021 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 4096 24 2021 公共
drwxr-xr-x. 2 root root 4096 24 2021 模板
drwxr-xr-x. 2 root root 4096 24 2021 视频
drwxr-xr-x. 2 root root 4096 24 2021 图片
drwxr-xr-x. 2 root root 4096 24 2021 文档
drwxr-xr-x. 2 root root 4096 24 2021 下载
drwxr-xr-x. 2 root root 4096 24 2021 音乐
drwxr-xr-x. 2 root root 4096 24 2021 桌面

最前面一列是权限介绍,一共10位,按0-9编号:

  • 第0位:文件类型(d,-,l,c,b)
    • l表示链接:相当于windows的快捷方式
    • d表示目录,相当于windows的文件夹
    • c表示字符设备文件,鼠标,键盘
    • b是块设备,比如硬盘
  • 第1-3位:所有者对于该文件的权限
  • 第4-6位:所在组对于该文件的权限
  • 第7-9位:其他用户对于该文件的权限

权限共分为rwx三种:

  1. r表示read,读的权限
  2. w表示write,写的权限,对于文件来说,可以修改,但不可以删除文件,删除一个文件的前提是对该文件所在目录有写的权限才行,也就是你只有能修改目录,才能对目录的内容(所属文件)进行修改,而对于目录来说,是可以创建、删除、重命名的权限
  3. x表示execute,对文件来说是执行的权限,对目录来说是进入该目录的权限

3、权限的设置和修改

  • 修改文件的所有者:chown newowner 文件/目录
  • 递归修改目录及其子文件或目录的所有者:chown -R newowner 文件/目录
  • 修改文件/目录所有者和所在组:chown -R newowner:newgroup
  • 修改文件或目录的权限:
    • 第一种方式,直接使用+,-,=设置,u表示所有者,g表示所在组,o表示其他组,a表示所有人,也就是所有者+所在组+其他人
    • 比如修改文件目录的权限:chmod u=rwx,g=rx,o=x 文件/目录 这样设置,注意要有,
    • 添加或减少权限:比如chmod u-x;chmod o+r:chmod -R u-w,u-x,g-w,g-x,o-w,o-x direct
    • 第二种方式,使用数字表示权限,r=4,w=2,x=1:chmod -R 767 direct

七、定时调度任务

1、crontab任务调度

就是希望系统在某个特定的时间执行特定的指令。

基本语法如下:crontab【选项】

image-20220212153040461

比如:*/1 * * * * ls–l/etc/>/tmp/to.txt

image-20220212153159002

记住这个顺序分时天月星期*表示任何时间,-表示连续时间,,表示某几个时间点,/表示每隔多久。

crontab -e
#在脚本文件中写入
*/1 * * * * ls -l /etc/ > /tmp/to.txt

2、定时任务

如果想让任务一次性定时的执行,可以使用at命令,at的守护进程atd会在后台模式运行,一般atd守护进程每隔60s检查作业队列依次,有作业的话就查看运行时间,如果时间和系统当前时间可以匹配就运行此作业。

可以使用ps -ef |grep atd来查看atd是否在运行中。

[root@hspEdu01 tmp]# ps -ef | grep atd
root       7568      1  0 09:38 ?        00:00:00 /usr/sbin/atd -f
  • at指令:at【选项】【时间】 然后输入两次ctrl + D才行 image-20220210232426682

at指定时间的方法:

  1. 接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如:04:00;
  2. 使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间;
  3. 采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如:12pm;
  4. 指定命令执行的具体日期,指定格式为monthday(月日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:002021-03-1;
  5. 使用相对计时法。指定格式为:now+counttime-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。例如:now+5minutes;
  6. 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间;

八、RPM包的管理

rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHatPackageManager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。

查看当前系统安装的rpm列表:rpm -qa | grep XXX。

[root@oliver001 ~]# rpm -qa | grep firefox
firefox-60.2.2-1.el7.centos.x86_64

firefox表示软件名,60.2.2-1表示版本号,el7.centos.x86_64表示适用的系统,64位操作系统。

rpm的其他查询指令:

  • rpm -qa:查询所安装的所有rpm软件包
  • rpm -qa | more
  • rpm -qa | grep X[rpm -qa | grep firefox]
  • rpm -q 软件包名:查询软件包是否安装,案例:rpm -q firefox
  • rpm -qi 软件包名:查询软件包信息,案例:rpm -qi firefox
  • rpm -ql 软件包名:查询软件包中的文件,比如:rpm -ql firefox
  • rpm -qf:文件全路径名查询文件所属的软件包,rpm -qf /etc/passwd;rpm -qf /root/install.log

卸载rpm包基本语法:rpm -e RPM包的名称,比如:rpm -e firefox,但是这里会有一些问题,如果和其他软件包存在依赖关系,卸载时会报错,如果想强制删除可以使用rpm -e --nodeps RPM包名。

安装rpm包基本语法:rpm -ivh RPM包的全路径名称,i表示install,v表示verbose提示,h表示hash进度条。但是安装要找到对应软件的rpm包,可以到CentOS的packages目录中有没有,找到了使用这个全路径名称即可。

九、yum的使用

Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的yum服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

yum的基本语法:

  • yum list | grep XX软件:查询yum服务器是否有需要安装的软件

  • yum install XXX:下载安装