linux常用命令总结

本文详细介绍了Linux系统的各类操作,涵盖VIM命令、关机重启、用户管理、实用指令、文件目录操作、搜索查找、压缩解压、组与权限管理、任务调度、磁盘分区挂载、网络配置、进程与服务管理、动态监控及RPM包管理等内容,为Linux使用者提供全面的操作指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VIM命令:

vim:修改文档

yy:复制当前行,按p粘贴,5yy表示复制当前行以下5行

dd:删除当前行,5dd表示删除一下5行

在文档中查找关键字,按/查找 输入n查找下一个

设置文件行数: set nu set nonu

找首末行:G最末行 gg首行

撤销这个动作: u

快速移动到第20行 输入20 然后按 shift +g Enter是有多少数字移动多少行

关机,重启

 

shutdown

shutdown -h now :立即关机

shutdown -h 1:一分钟后关机

shutdown -r now:立即重启

halt:效果等价于关机

reboot:重启服务器

sync: 把内存的数据同步到磁盘,保存数据

注意:不管是关机还是重启,首先要用sync命令,把内存中的数据写到磁盘

登录 注销

尽量少用root登录,

su root 切换到管理员

logout:远程注销有效,在运行级别3有效

用户管理

linux是一个多用户多任务的操作系统,任何一个使用资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

Linux的用户需要至少要属于一个组

cd:change diretory

添加用户:

useradd 【选项】 用户名

useradd xm 如果没有选项,就会默认创建一个跟用户名相同的组

useradd -d 指定目录 加入到指定目录组下

passwd 用户名 更改用户密码

删除用户:

userdel 用户名,保持家目录

userdel -r 用户名 把用户组也删除

一般不会删除家目录 因为家目录下有许多资料

查询用户信息:

id root

切换用户

su 用户

exit 返回到原先账户

whoami 显示账户

用户组:

类似于角色,系统可以对有共性的多个用户进行统一的管理

新增组:groupadd

删除组:groupdel

增加用户时直接加上组: useradd -g 用户组 用户名

修改用户的组: usermod -g 用户组 用户名

用户组的文件

用户配置文件 /etc/passwd

组配置文件 /etc/group

口令配置文件 /etc/shadow

vim /etc/passwd

用户名:x:用户id:组id:目录id:shell

 

实用指令:

指令运行级别:7个运行级别

0:关机

1:单用户(找回丢失密码)

2:多用户无网络服务

3:多用户有网络服务

4:保留

5:图形界面

6:重启

 

常用运行级别是3和5,要修改默认的运行级别可改文件

/etc/inittab的id:5:initdefault:这一行的数字是运行级别

 

切换到指定运行级别的指令

init[012356]

如:从5>3

init 3

如何找到root密码?

进入单用户模式,然后修改root密码。因为进入单用户模式,root不需要密码就可以登录

开机时候按enter 按e 光标移动到第二行 按 空格 1 在输入b

然后passwd 修改密码就行 必须在机房的虚拟机里改 不能在远程改

如果改成0 就会一直关机怎么办?

也是进入单用户模式

帮助指令:

man +指令 ll -a隐藏文件会出来

help +指令

 

文件目录类

 

pwd(功能描述 显示当前工作目录的绝对路径)

 

ls[目录或是文件] list

-l 以列表的方式显示信息

-a 显示当前目录所有的文件和目录,包括隐藏的

 

cd ~回到自己目录

cd..回到上一层

 

mkdir:make directory

-p 创建多级目录

rmdir:指令删除空目录

不是非空:rm -rf

 

touch 创建一个空文件

touch ok1.txt ok2.txt 可以创建多个指令

 

 

cp[选项] source dest:

-r:递归复制整个文件夹 cp整个文件下的东西需要带-r

覆盖:\cp强制覆盖

 

rm 移除文件或目录

-rf 递归删除整个文件夹

-f 强制删除不提示

 

mv 移动文件与目录重命名

mv old new

 

locale:查看编码

设置编码为 zh_cn utf-8编码 不乱码

localedef -c -f UTF-8 -i zh_CN zh_CN.utf8

export LC_ALL=zh_CN.utf8

 

cat 一次性查看文件所有内容 只能浏览不能修改文件,为了浏览方便 一般会加上 管道命令

-n:显示行号

| more 以全屏幕的方式按页显示文本文件的内容 分页显示 按空格键

-NUM 每次看多少行

 

less 不是全部加载文件,根据需要显示加载文件内容,也是分页

more: 顾名思义显示更多

less: 由于more不能后退,就取more的反义词less加上后退功能

所以Linux里流传着这样一句话:"less is more".

总结下more 和 less的区别:

1.  less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示

2.  less不必读整个文件,加载速度会比more更快

3.  less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容

 

> 和>>

>输出重定向和>>追加

(1)ls -l>文件 (列表的内容写入文件a.txt(覆盖写),如果不存在则新建一个)

将ls -l 的显示的内容覆盖写入到a.txt文件中。

(2)ls -al>>文件 (功能描述:列表的内容追加到文件aa.txt的末尾)

(3)cat 文件1 > 文件2(将文件1的内容覆盖到文件2)

(4)echo "内容" >> c.txt 追加

(5)cal >> 路径 当前日历信息 追加到文件下面

 

echo [选项] [输出内荣]

echo $PATH

echo "hello"

一般是打出环境、

 

head 显示文件的开头部分 默认显示前10行

head -n 10 显示文件前10行

 

tail 输出文件中尾部的内容,默认显示文件的后10行内容

tail 文件 查看文件后10行内容

tail -n 5 文件 查看文件后5行内容,5可以是任意行数

tail -f 文件 实时追踪该文档的所有更新

 

ln软链接 符号链接

ln -s [原文件目录] [软链接名] (功能描述:给源文件创建一个软链接)

删除软连接不要带斜杠,否则提示资源忙

pwd查看时仍然看到软连接所在目录

 

history

显示所有的历史命令 history

显示最近使用过的10个指令 history 10

执行历史编号为5的指令

!对应的编号 执行编号对应的命令 !178

 

date

date "+%Y" 年

date "+%m" 月

date "+%d" 日

date "+Y %m %d %H %M%S" 时分秒

设置日期

date -s "2019-04-23 22:22:22"

恢复时间:ntpdate time.windows.com

 

cal calenter

查看日历指令 cal

显示一年时间 cal 2020

 

搜索查找类

find

从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。

find[搜索范围] [选项] [文件名]

-name<查询方式> 按照指定的文件名查找模式查找文件

find /home -name hello.txt

find / -name *.txt

-user<用户名> 查找属于指定用户名所有文件

find /opt -user root

-size<文件大小> 按照指定的文件大小查找文件

find / -size +20M +大于 -小于

find / -size +20480k +大于 -小于

locate

可以快速定位文件路径。locate指令利用实现建立的系统中所有文件名称及路径的locate数据实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确性,管理员必须定期更新locate时刻。

updatedb 创建locate数据库

locate hello.txt

 

 

grep指令

过滤查找 grep[选项] 查找内容 源文件

-n 显示匹配行及行数

-i 忽略字母大小写

cat hello.tx | grep yes

 

管道指令|

表示将前一个命令的处理结果输出传递给后面的命令处理。

 

压缩文件

gzip用于压缩文件,gunzip用于解压的

gzip 只能将文件压缩至.gz的 被压缩的文件不会被保留

gunzip 用于解压.gz的

 

zip用于压缩文件

-r:递归压缩,即压缩目录

zip -r 名字 路径

zip -r xxx.zip ./*

 

unzip用于解压文件,这个在项目打包发布中很有用

-d:指定解压后文件的存放目录

unzip -d 指定目录 名字

unzip -d /temp test.zip

 

tar

tar -zcvf 名字 文件1 文件2 。。。

tar -zcvf 名字 目录

tar -zcvf lls.tar.gz ll.txt ls.txt

 

解压

tar -zxvf 文件名

tar -zxvf 文件名 -C /opt/ 指定目录必须存在

tar -zxvf lls.tar.gz -C /opt/

 

组管理和权限管理

 

用户配置文件(用户信息)/etc/passwd

口令配置信息(密码和登录信息,是加密)/etc/shadow

组配置文件(组信息)/etc/group

 

每个用户必须属于一个组,不能独立于组外

 

在linux中每个文件有所有者,所在组,其他组的概念

(1)所有组

文件的创建者就是文件的所有者

如:创建一个police组,创建一个tom用户,将tom加到police下,然后创建一个文件ok.txt,看看情况如何?

groupadd police

useradd -g police tom

passwd tom

ls -ahl

 

修改文件所有者

chown 用户名 文件名 改变文件的所有者

chown newowner:newgroup file 改变用户的所有者和所有组

-R 如果是目录 则使其下所有子文件或目录递归生效

改变kkk目录下所有文件(包括子目录和子目录下所有文件)的所有者为tom: chown -R tom kkk/

 

(2)所在组

默认是创建者所在的组

修改文件所在组:

chgrp 组名 文件名

chgrp -R 组名 /home/kkk

 

(3)其它组

改变用户所在组

usermod -g 组名 用户名

usermod -d 目录名 用户名 改变该用户登录的初始目录

创建一个土匪组(bandit)将tom这个用户从原来所在的police组,修改到bandit组

 

权限基本介绍

 

rwx作用到文件

r 代表可读。可以读取,查看

w代表可写。可以修改,但是不一定可以删除。必须对该文件所在目录有写权限才可以删除

x代表可执行。

rwx作用到目录

r代表可读。可以读取,查看目录内容

w代表可写。可以修改,目录内创建+删除+重命名目录

x代表可执行。可以进入该目录

 

 

-rw-r--r--

-普通文件 d:目录 l:软连接 c:字符设备【字符:鼠标】b:块文件,硬盘

rw-:表示文件所有者权限 r:读 w:写

r--:文件所在组的用户只有组权限

r--:文件其他组的用户只有读权限

 

1:如果是文件 是硬链接的数 ,如果是目录表示子目录个数

tom:文件的所有者

police:文件所在组

6:文件的大小,如果是目录,都是4096

3月 18 19:24:文件最后修改时间

第0位:文件类型(d,-,l,c,b)

第1-3位 所有者拥有的权限 -user

第4-6位 确定所属组(同用户组拥有该文件的权限) -Group

第7-9位 确定其他用户拥有该文件的权限 -Other

 

可用数字表示为: r=4 w=2 x=1

修改权限-chmod

可以修改文件或者目录的权限

u:所有者 g:所在组 o:其他人 a:所有人(u,g,o的总和)

1 chmod u=rwx,g=rx,o=x 文件目录名

2 chmod o+w 文件目录名

3 chmod a-x 文件目录名

案例演示

(1)给abc文件所有者加执行权限,给所在组读和执行权限,给其他人读和写权限

chmod u=x,g=wx,o=rw abc

(2) 给abc文件的所有者除去执行的权限,增加组写的权限

chmod u-x,g+w abc

(3) 给abc所有用户增加读的权限

chmod a+r

第二种方式 通过数字改变权限

chmod u=rwx,g=rx,o=x 文件目录名

相当于 chmod 751 文件目录名

案例演示:

(1) 将/hello/abc.txt 文件的权限修改成 rwx-xr-x,使用数字的方式实现

chmod 751 abc.txt

 

最佳实践 警察和土匪游戏

groupadd police

groupadd bandit

 

useradd -g police jack

useradd -g police jerry

 

useradd -g bandit xh

useradd -g bandit xm

 

touch abc.txt

chmod 640 abc.txt

chmod 664 abc.txt

 

usermod -g police xh

groupadd shenxian

groupadd yaoguai

useradd -g yaoguai wukong

useradd -g yaoguai bajie

 

useradd -g shenxian bajie

useradd -g shenxian shaseng

 

touch monkey.java

vim monkey.java

chmod g+rw monkey.java

vim monkey.java

 

chgrp yaoguai shaseng

 

 

任务调度

crontab进行定时任务的设置

是指系统在某个时间执行的特定的命令或程序。

任务调度分类:1.系统工作:有些重要的工作必须周而复始的执行。如病毒扫描等2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份

-e 编辑crontab定时任务

-l 查询crontab任务

-r 删除当前用户所有的crontab任务

设置任务调度文件: /etc/crontab

设置个人任务调度。执行 crentab -e 命令。

接着输入任务到调度文件

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

每小时的每分钟执行ls -l /etc/>/tmp/to.txt

任务调度的几个应用实例

1.每隔一分钟,就将当前的日期时间加到/tmp/mydate文件中

vim mytask.sh

date>>/tmp/mydate

给mytask.sh一个可执行权限

crontab -e

*/1 * * * * /home/mytask.sh

重启任务调度 service crond restart

 

磁盘分区 挂载

 

分区基础知识

mbr分区:

1.最多支持四个主分区

2.系统只能安装在主分区

3.扩展分区要占一个主分区

4.MBR最大只支持2TB,但拥有最好的兼容性

 

gtp分区:

1.支持无限多个主分区(但操作系统可能限制,比如windows下最多128哥分区)

2.最大支持18EB的大容量(EB=1024PB,PB=1024TB)

3.WINDOWS7 64位以后支持gtp

 

原理介绍

(1)linux来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个目录,一个独立且唯一的文件结构,Linux每个分区都是用来组成整个文件系统的一部分。

(2)linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

 

linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘

对于IDE硬盘,驱动器标识符为“hdx~” hd表名分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。例如,hda3表示第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。

对于SCSI硬盘则标识为“sdx~”

 

lsblk -f 查看系统的分区和挂载的情况

挂载的经典案例

需求是给linux系统增加一个新的硬盘。

如何增加一块硬盘

(1)虚拟机添加硬盘

(2)分区 fdisk /dev/sdb

(3)格式化 mkfs -t ext4 /dev/sdb1

(4)挂载 先创建/home/newdisk 挂载mount /dev/sdb1 /home/newdisk 卸载 umount

(5)设置可以自动挂载,当你重启系统,通过修改/etc/fstab 实现挂载

添加完成后 执行mount -a 即可生效

 

磁盘情况查询

 

查询系统整体磁盘使用情况

基本语法

df -h: 查询系统整体磁盘使用情况

du -h /目录:查询指定目录的磁盘占用情况,默认为当前目录

-s 指定目录占用大小汇总

-h 带计量单位

-a 含文件

-c 列出明细的同时,增加汇总值

查询/opt目录的磁盘占用情况,深度为1

du -ach --max-depth=1 /home

 

(1)统计目录下文件的个数

ls -l /home | grep "^-" | wc -l

先列出来,再过滤,再统计

(2)统计home目录下目录的个数

ls -l /home | grep "^d" | wc -l

(3)统计/home文件夹下文件的个数,包括子文件夹里的

ls -lr /home | grep "^-" | wc -l

(4)以树状显示文件图

tree

 

NAT模式(网络配置)

 

查看网路IP和网关

 

查看虚拟网络编辑器

修改ip地址(修改虚拟网络的ip)

查看网关

查看windows环境中的VMnet8网络配置(ipconfig指令)

使用ipconfig

 

指定固定ip地址

vi /etc/sysconfig/network-scripts/ifcfg-eth0

要求:将ip地址配配置成静态的,ip地址为192.168.184.130

重启 service network restart

 

进程管理

在linux中,每个执行的程序(代码)都称为一个进程。每个进程都分配一个ID号。

ps:用来查看目前系统中,有哪些正在执行,以及它们执行的状况,可以不加任何参数。

-a:显示当前终端的所有进程信息

-u:以用户的格式显示进程信息

-x:显示后天进程运行的参数

 

ps -aux | grep xxx

ps -ef | more

以全格式显示当前所有的进程,查看父进程

-e显示所有进程,-f全格式

终止进程kill 和 killall

-9 表示强迫进程立即停止

 

案例1:踢掉非法用户

ps -aux | grep sshd

找到对应的用户的进程号

kill 进程号

案例2:终止远程登录服务sshd,在适当时候再次重启sshd服务

kill掉远程登录服务

用户在xsell上就登录不上去

service sshd restart

案例3:终止多个gedit编辑器【killall,通过进程名称来终止进程】

gedit 编辑文档

killall gedit

案例4:强制关闭一个终端

ps -aux | grep bash

 

pstree 以树状形式查看

-p 显示树状形式的pid

请你树状的形式的用户id

 

 

服务管理

服务本质上就是进程,但是是运行在后台的,通常会监听某个端口,等待其他程序的请求,比如(mysql,sshd 防火墙等),因此我们又称为守护进程,是linux中非常重要的知识点。

service 服务名 【start | stop | restart | reload | status 】

在centos7.0后,使用systemctl

这是临时关闭的

 

runlevel 查看当前级别

who -r 查看当前级别

 

如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令,可以给每个服务的各个运行级别设置自启动/关闭

chkconfig --list

chkconfig --list | grep xxx

chkconfig iptables --list

chkconfig --level 5 服务名 on/off

 

 

查看防火墙 service iptables status/stop/start

 

dos

telnet指令检查linux的某个端口是否在监听,并且可以访问

telnet ip 端口

telnet 192.168.184.130 22

这些都是临时生效,要希望永久生效,要使用chkconfig指令,马上讲

 

查看多少服务

方式1:setup 查看服务 tab切换到确定和取消

方式2:/etc/init.d/服务名称 ls -l /etc/init.d/

 

 

ls -l /etc/init.d 查看那些服务可以用

查看系统运行级别 vim /etc/inittab

 

 

应用实例:

(1)案例1:请显示当前系统所有服务的各个运行及级别的运行状态

chkconfig --list

(2)案例2: 请查看sshd服务的运行状态

service sshd status

(3)将sshd服务在运行级别5下设置为不自动启动,看看有什么效果

chkconfig --level 5 sshd off

(4)在运行级别为5时,关闭防火墙

chkconfig --level 5 iptables off

(4)在所有运行级别下,关闭防火墙

chkconfig iptables off

(5)在所有运行级别下,开启防火墙

chkconfig iptables on

 

动态监控进程

 

top与ps命令很相似,他们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。

top[选项]

选项说明:

-d :指定top命令每个几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令

-i:使top不显示任何闲置或者僵尸进程

-p:通过指定监控进程ID来仅仅监控某个进程的状态

 

交互操作说明:

P 以CPU使用率排序,默认就是此项

M 以内存的使用率排序

N 以PID排序

q 推出top

 

 

监控某个用户

top: 按u 再输入用户名

k杀死某个进程

指定更新时间 默认 top -d 10 更改成10s

 

 

netstat

查看系统网络情况

-an 按一定顺序排列输出

-p 显示那个进程在调用

netstat -anp | grep sshd 专门看某个服务的运行状态

 

 

RPM包的管理

查询已安装的rpm列表 rpm -qa | grep xx

请查询当前Linux有没有安装firefox

rpm -qa | grep firefox

rpm -qa | more

rpm -q 软件包名 查询软件包是否安装

rpm -qi file 查询安装的rpm软件包信息 版本 位数 等

rpm -ql 软件包名:查询rpm软件包安装到哪里

rpm -ql firefox

 

rpm -qf 文件全路径名 查询文件所属的软件包

rpm -qf /etc/passwd

rpm -qf /root/install.log

rpm -e rpm包的名称 删除rpm软件

 

加上 nodeps就是强制删除

 

安装rpm包

i=install 安装

v=verbose 提示

h=hash 进度条

 

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

 

yum list | grep xx 软件列表

yum install xxx 下载安装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值