蠢萌的小姐姐都能学会的Linux基本命令,有这份学习秘籍,你还不抓紧时间上车?

在这里插入图片描述

目录说明

在这里插入图片描述

# /bin[重点]:是Binary的缩写,这个目录存放着最经常使用的命令

# /sbin[重点]:是Super User的意思,这里存放的是系统管理员使用的系统管理程序

# /home[重点]:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般目录名是以用户的账号命名的

# /root[重点]:该目录为系统管理员,也称作超级权限者的用户主目录

# /lib:系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库

# /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

# /etc[重点]:所有的系统管理所需要的配置文件和子目录 my.conf

# /usr[重点]:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录

# /boot[重点]:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件

# /proc[别动]:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息

# /srv[别动]: service缩写,该目录存放一些服务启动之后需要提取的数据

# /sys[别动]:这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统

# /tmp:这个目录是用来存放一些临时文件的

# /dev:类似于windows的设备管理器,把所有的硬件用文件的形式存储

# /media[重点]:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下

# /mnt[重点]:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了

# /opt:这是给主机额外安装软件所摆放的目录,如安装oracle数据库就可放到该目录下,默认为空。

# /usr/local[重点]:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序

# /var[重点]:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件

# /selinux[security-enhanced linux]:SELinux是一种安全子系统,它能控制程序只能访问特定文件

总结:
	1)linux的目录中有且只有一个根目录 /
	2)linux的各个目录存放的内容是规划好,不用乱放文件
	3)linux是以文件的形式管理我们的设备,因此linux系统,一切皆为文件

vi和vim编辑器

# 三种模式:
# 1、正常模式:打开文件默认就是一般模式
# 2、插入/编辑模式:按下i,I,o,O,a,A,r,R任何字母进入,一般按i即可
# 3、命令行模式:正常模式下输入:(冒号)或者/(斜杆)进入,可以读取、存盘、替换、离开vim、显示行号等

# 拷贝当前行,按p才粘贴
yy
# 拷贝当前行向下的5行,按p才粘贴
5yy
# 删除当前行
dd
# 删除当前行向下5行
5dd
# 在文件中查找某个单词,命令行操作,输入n查找下一个,shift + n查找上一个
/ 关键字
# 取消搜索高亮
:noh
# 设置文件的行号
:set nu
# 取消文件的行号
:set nonu
# 跳到文件最末行
G
# 跳到文件首行
gg
# 跳到文件第几行
5[数字] gg
# 撤销输入动作
u

在这里插入图片描述

关机&重启命令

# 立刻进行关机
shutdown -h now 或 halt
# 1分钟后关机
shudown -h 1
# 现在重新启动计算机
shutdown -r now 或 reboot
# 关机或重启时,把内存的数据同步到磁盘
sync

# 注销用户
logout
# 切换系统管理员身份
su 用户名

用户管理

# 基本语法,默认以用户名为组
# 当创建用户成功后,会自动创建和用户名同名的家目录,位于/home
# 也可以通过useradd -d 指定新创建用户的家目录
useradd [选项] 用户名

# 添加用户
useradd 用户名
# 添加用户,指定家目录
useradd -d /home/people/ xh
# 给用户指定或者修改密码
passwd 用户名
# 删除用户,但保留家目录(推荐)
userdel 用户名
# 删除用户,但不保留家目录
userdel -r 用户名
# 查询用户信息 uid=0(root) gid=0(root) 组=0(root)
id 用户名
# 切换用户,高权限用户切换到低权限用户不需要密码
su 用户名 或者 su - 用户名
# 返回原来的用户
exit
# 添加用户组
groupadd 组名
# 删除用户组
groupdel 组名
# 创建用户,指定组
useradd -g 组名 用户名
# 修改用户的组
usermod -g 组名 用户名

# 相关配置文件
# /etc/passwd:用户相关信息:用户名:口令:用户id:组id:家目录:shell
# /etc/shadow:口令的配置文件
# /etc/group:组的配置文件:组名:口令:组id:组内用户列表

运行级别指令

# 运行级别,常用级别(3和5),配置文件/etc/inittab[init:运行级别]:
# 0:关机
# 1:单用户(找回丢失密码)
# 2:多用户无网络服务
# 3:多用户有网络服务
# 4:系统未实用保留给用户
# 5:图形界面
# 6:系统重启

# 切换运行级别
init [012356]
# 实例:找回root密码
https://blog.csdn.net/cxhblog/article/details/114191501

帮助指令

# man [命令或配置文件](功能描述,获得帮助信息)
man ls
# help 命令(获得shell内置命令的帮助信息)
help cd

文件目录类

# 显示当前目录的绝对路径
pwd
# 显示当前目录的内容信息
ls
# 显示当前目录的内容信息,包括隐藏的
ls -a
# 显示当前目录的内容信息,以列表的方式
ls -l
# 显示当前目录的内容信息,以列表的方式并且显示大小
ls -lh
# 查看文件所有者
ls -ahl
# 切换目录
cd 目录路径
# 创建目录
mkdir 目录名
# 创建多级目录
mkdir -p /home/animal/dog
# 删除文件,提示
rm hello.txt
# 删除文件,不提示
rm -f hello.txt
# 删除空目录
rmdir /home/animal/dog
# 递归删除非空目录,会提示
rm -r /home/animal
# 递归删除非空目录,不提示
rm -rf /home/animal
# 创建空文件
touch hello.txt
# 一次性创建多个空文件
touch hello1.txt hello2.txt
# 拷贝文件到指定目录
cp hello.txt[要拷贝的文件] /home/hello/[要拷贝到的目录]
# 递归复制整个目录
cp -r hello[要拷贝的目录] /home/bbb[要拷贝到的目录]
# 拷贝并重命名文件
cp hello.txt hello1.txt
# 强制覆盖要复制的文件目录
\cp -r hello/ bbb/
# 移动文件
mv hello.txt bbb/
# 移动文件,并重命名
mv hello.txt hello1.txt
# 查看文件内容
cat hello.txt
# 查看文件内容,显示行号
cat -n hello.txt
# 查看文件内容,显示行号,分页显示
cat -n hello.txt | more
# 输出内容到控制台
echo hello world
# 输出环境变量
echo $PATH
# 显示文件开头部分内容,默认10行
head hello.txt
# 显示文件开头部分内容,前5行
head -n 5 hello.txt
# 查看文件后面内容,默认后10行
tail hello.txt
# 查看文件后面内容,后5行
tail -n 5 hello.txt
# 实时查看文件后面内容
tail -f hello.txt
# 建立软链接
ln -s /root[要链接到的目录] linkToRoot[链接名目录]
# 查看历史指令
history
# 查看历史指令,显示10个
history 10
# 执行历史指令,第10个
!10

more和less查看文件内容

# more相关操作
# 空白键(space):向下翻一页
# Enter:向下翻一行
# q:立刻离开,不再显示文件内容
# Ctrl+F:向下滚动一屏
# Ctrl+B:返回上一屏
# =:显示当前行号
# f:输出文件名和当前行号
# 实践操作
more hello.txt

# less相关操作(比more更加强大,效率更高)
# 空白键(space):向下翻动一页
# pagedown:向下翻动一页
# pageup:向上翻动一页
# /文字:向下搜索文字
# ?文字:向上搜索文字
# q:离开less
# 实践操作
less hello.txt

>输出重定向和>>追加

# 输出内容到文件中,覆盖写
ls -l > a.txt
# 输出内容到文件中,追加
ls -la >> b.txt
# 文件1的内容覆盖到文件2
cat a.txt > b.txt
# echo的内容输出到文件中
echo hello > a.txt
# 把当前日期写入文件
cal > a.txt

时间日期类

# 显示当前日期时间
date
# 显示当前年份
date "+%Y"
# 显示当前月份
date "+%m"
# 显示当前日
date "+%d"
# 显示当前年月日
date "+%Y-%m-%d"
# 显示当前年月日时分秒
date "+%Y-%m-%d %H:%M:%S"
# 设置日期
date -s 2021-02-28 14:58:60
# 查看当前日历
cal
# 显示2020年日历
cal 2020

搜索查找类

# find指令将从指定目录向下递归的遍历其各个子目录,将满足条件的文件或目录显示在终端
# 注意点:指定开始搜索的范围目录,路径必须在表达式之前,例:当前目录/home,不能查找/
# 基本语法:find [指定开始搜索的范围目录] [选项]
# 按文件名查找文件
find / -name hello.txt
# 按用户名文件拥有者查找文件
find / -user nobody
# 按文件大小查找文件,大于3m
find / -size +3M
# 按文件大小查找文件,小于3m
find / -size -3M
# 按文件大小查找文件,等于3m
find / -size 3M
# 按文件大小查找文件,大于30k
find / -size +30K
# 查找以什么为后缀的文件
find / -name *.txt

# locate快速查找文件
# 创建locate数据库
updatedb
# 查找文件
locate hello.txt

# grep指令和管道符号 |
# grep过滤查找,管道符 | ,表示将前一个命令的处理结果输出传递给后面的命令处理
# 查看文件,过滤文件显示存在数字10
cat a.txt | grep 10
# 查看文件,过滤文件显示存在数字10,显示行号
cat a.txt | grep -n 10
# 查看文件,过滤文件显示存在数字hello,忽略大小写
cat a.txt | grep -i hello
# 查看文件,过滤文件显示存在数字hello,忽略大小写,显示行号
cat a.txt | grep -ni hello

压缩和解压缩

# 压缩文件,压缩完成,文件名作为压缩文件名,并且原文件不保留
gzip hello.txt[文件名] 		得到:hello.txt.gz
# 解压文件
gunzip hello.txt.gz

# 压缩文件
zip hello.zip hello.txt
# 递归压缩文件目录
zip -r home.zip /home
# 解压文件到某个目录
unzip -d /home/people/ home.zip

# 打包hello.txt和a.txt两个文件,打包名为hello.tar.gz
tar -czvf hello.tar.gz hello.txt a.txt
# 解包文件到当前目录下
tar -zxvf hello.tar.gz
# 解包文件到/home/zwj目录下
tar -zxvf hello.tar.gz -C zwj/

# -c:产生.tar打包文件
# -v:显示详细信息
# -f:指定压缩后的文件名,指定备份文件
# -z:打包同时压缩,处理备份文件
# -x:解包.tar文件

组管理和权限管理

# Linux组基本介绍:在linux中的每个用户必须属于一个组,不能独立于组外。每个文件有所有者,所在组,其它组的概念
# 1:所有者:文件的创建者,谁创建就是谁
# 2:所在组:一般指所有者所在的组,文件可以更改所在者
# 3:其它组:除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
# 4:改变用户所在的组

# 查看文件所有者
ls -ahl
# 修改文件所有者
chown tom hello.txt
# 修改文件所在组
chgrp police hello.txt
# 改变用户所在组
usermod  -g police[组名] tom[用户名]
# 改变用户登录的初始目录
usermod -d /home/police[目录名] tom[用户名]

# -rw-r--r--. 1 tom police 0 2月  28 22:33 ok.txt
# r[4]:读取,查看,w[2]:写,x[1]:执行,进入目录
# 第1个[-]:文件类型:-:普通文件,d:目录,l:软链接,c:字符设备[键盘,鼠标],b:块文件[硬盘]
# 第2-4个[rw-]:所有者权限
# 第5-7个[r--]:文件所在者的用户的权限
# 第8-10个[r--]:文件其它组的用户的权限
# 第11个[1]:如果是文件表示硬链接的数,如果是目录表示该目录下子目录个数
# 第12个[tom]:文件的所有者用户名
# 第13个[police]:文件的所在组
# 第14个[0]:文件的大小,文件有内容的话,多加1个隐藏字符,如果是4096代表目录占据的空间
# 第15个[28 22:33]:文件最后的修改时间

# u:所有者,g:所有组,o:其他人,a:所有人(u,g,o的总和)
# 1:chmod u=rwx,g=rx,o=x 文件目录名
# 2:chmod o+w 文件目录名
# 3:chmod a-x 文件目录名
# 给abc.txt文件,所有者读,写,执行权限,给所有组读,执行权限,给其他者读,执行权限
chmod u=rwx,g=rx,o=rx abc.txt 或 chmod 755 abc.txt
# 给abc.txt文件的所有者除去执行的权限,增加组写的权限
chmod u-x,g+w abc.txt 或 chmod 675 abc.txt
# 给abc.txt文件的所有用户添加读的权限
chmod a+r abc.txt
# 改变文件的所有者
chown cxh[用户名] a[文件目录]
# 改变用户的所有者和所有组
chown cxh:cxh a
# 递归改变文件目录及子文件目录所有者和所有组
chown -R cxh:cxh a

定时任务调度

# 设置个人任务调度
crontab -e
# 终止任务调度
crontab -r
# 列出当前有哪些任务调度
crontab -l
# 重启任务调度
service crond restart
# 每分钟执行ls -l /etc/目录,>>追加显示到/tmp/to.txt文件中
*/1 * * * * ls -l /etc/ >> /tmp/to.txt
# 第一个*:分钟[0-59]
# 第二个*:小时[0-23]
# 第三个*:月天[1-31]
# 第四个*:月[1-12]
# 第五个*:星期几[0-7],0和7都代表周日

# 特殊符号说明
# *:代表任何时间,比如第一个*代表每小时中每分钟都执行一次
# ,:代表不连续的时间,比如“0 8,12,14 * * *“代表在每天的8,12,14点0分都执行一次命令
# -:代表连续的时间范围,比如“0 5 * * 1-6”代表周一到周六凌晨5点0分执行命令
# */n:代表每隔多久执行一次,不如“*/10 * * * *”代表每隔10分钟执行一次命令

# 任务案例
# 45 22 * * *:每天22点45分执行命令
# 0 17 * * 1:每周一下午5点0分执行命令
# 0 5 1,15 * *:每月1号和15号凌晨5点0分执行命令
# 40 4 * * 1-5:每周一到周五凌晨4点40分执行命令
# */10 4 * * *:每天凌晨4点,每隔10分钟执行一次命令
# 0 0 1,15 * 1:每周一,1号,15号,凌晨00:00都会执行命令

# 每分钟执行/home/mytask.sh脚本文件,脚本文件需要给可执行权限才可调用
*/1 * * * * /home/mytask.sh

磁盘分区和挂载

# mbr分区:
# 1:最多支持四个主分区
# 2:系统只能安装在主分区
# 3:扩展分区要占一个主分区
# 4:MBR最大支持2TB,但拥有最好的兼容性

# gtp分区
# 1:支持无限多个主分区(但操作系统可能限制,比如windows下最多128个分区)
# 2:最大支持18EB的大容量(1EB=1024PB,1PB=1024TB)
# 3:windows7 64位以后支持gtp

# Linux分区:
# 1:无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,
# Linux中每个分区都是用来组成整个文件系统的一部分
# 2:Linux采用了一种叫“载入”的处理方法,它的整个系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得

# 硬盘
# Linux硬盘分IDE硬盘和SCSI硬盘,目前基本是SCSI硬盘

# 查看系统的分区和挂载情况,有分区大小
lsblk(译读:老师不离开)
# 查看系统的分区和挂载情况,详细信息
lsblk -f

# 虚拟机添加一块硬盘,查看下面链接文章:
https://blog.csdn.net/cxhblog/article/details/114277421

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

磁盘情况查询

# 查询系统整体磁盘使用情况
df -lh

# 查询指定目录的磁盘占用情况
du -ach --max-depth=1 /opt
# -s:指定目录占用大小汇总
# -h:带计量单位
# -a:含文件
# --max-depth=1:子目录深度
# -c:列出明细的同时,增加汇总值

# 磁盘情况-工作实用指令
# 统计/home文件夹下文件的个数
ls -l /home | grep "^-" | wc -l
# 统计/home文件夹下目录的个数
ls -l /home | grep "^d" | wc -l
# 统计/home文件夹下文件的个数,包括子文件里的
ls -lR /home | grep "^-" | wc -l
# 统计/home文件夹下目录的个数,包括子文件里的
ls -lR /home | grep "^d" | wc -l
# 以树状显示目录结构,需要安装tree,yum install tree
tree

网络配置

# 测试主机之间网络连通
ping www.baidu.com
# 配置固定ip
# 编辑配置文件,修改如下图
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 重启网络服务,网络依然自动连接说明配置正确
service newtwork restart

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进程管理

# 基本介绍
# 1、在Linux中,每个执行的程序(代码)都称为一个进程,每一个进程都分配一个ID号
# 2、每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程
# 3、进程分两种方式,前台和后台。
# 4、一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。

# 显示当前终端的所有进程信息
ps -a
# 以用户的格式显示进程信息
ps -u
# 显示后台进程运行的参数
ps -x
# 结合使用
ps -aux 或者 ps -ef
# 显示进程信息,过滤进程
ps -aux | grep sshd
# 获取某服务程序的所有进程号
pgrep httpd

# System V:展示风格
# USER:用户名称
# PID:进程号
# %CPU:进程占用CPU的百分比
# %MEM:进程占用物理内存的百分比
# VSZ:进程占用的虚拟内存大小(单位:KB)
# RSS:进程占用的物理内存大小(单位:KB)
# TTY:终端名称
# STAT:进程状态,s-睡眠,r-运行,D-短期等待,Z-僵尸进程,T-被跟踪或者被停止
# STARTED:进程的启动时间
# TIME:CPU占用总时间
# COMMAND:启动进程所用的命令和参数,过长会被截断显示

# 查看进程的父进程
ps -ef
# 查看sshd进程的父进程
ps -ef | grep sshd
# 杀死进程,根据进程id
kill 4010
# 强制杀死进程,根据进程id
kill -9 4010
# 杀死进程,通过进程名称
killall gedit
# 以树状查看进程pid
pstree -p
# 以树状查看进程的用户id
pstree -u

在这里插入图片描述

服务管理

# 查看端口监听情况
netstat -lnpt
# lsof 列出当前系统打开文件,常与-i选项使用,用于查看某个端口被哪个程序占用
lsof -i:80
# 开启服务
systemctl start 服务名称.service
# 查看服务状态信息
systemctl status rabbitmq-server[服务名称]
# 查看已开放的端口(默认不开放任何端口)
firewall-cmd --list-ports 或 firewall-cmd --list-all
# 开放端口
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
# 删除开放端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 检查防火墙状态
systemctl status firewalld
# 查看防火墙状态
firewall-cmd --state
# 开启防火墙
systemctl start firewalld.service
# 重启防火墙
firewall-cmd --reload	或	systemctl reload firewalld.service
# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 测试端口是否开放成功,cmd命令下,需要安装telnet命令
telnet 192.168.178.2 22
# 查看开机自启服务
setup 或者 ls -l /etc/init.d/
# 查看各个运行级别下,服务的自启动状态
chkconfig --list
# 查看各个运行级别下,指定服务的自启动状态
chkconfig network --list
# 修改某个运行级别下,服务的自启动状态
chkconfig --level 5 network on/off
# 修改所有运行级别下,服务的自启动状态
chkconfig network on/off

进程监控

# 动态监控进程
# -d:指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令
# -i:使top不显示任何闲置或僵死进程
# -p:指定进程ID监控进程的姿态

# 交互操作说明
# P:以CPU使用率排序,默认
# M:以内存的使用率排序
# N:以PID排序
# q:退出top
# 查看监控进程,按CPU使用率排序
top 输入P

# 监视特定用户
top 命令下输入u,再输入用户名
# 终止指定进程
top 输入k,输入进程ID
# 指定系统更新时间,10秒
top -d 10

# 监控网络状态
# -an:按一定顺序排列输出
# -p:显示哪个进程在调用

# 查看系统所有的网络服务
netstat -anp | more

rpm和yum

# RPM:RedHat Package Manager(ReaHat软件包管理工具)

# 查询所有安装的rpm包
rpm -qa
# 查询指定名称安装的rpm包
rpm -qa | grep firefox
# 查询软件是否安装
rpm -q firefox
# 查询安装软件包信息
rpm -qi firefox
# 查询安装软件包的文件在哪里
rpm -ql firefox
# 查询文件所属的软件包
rpm -qf /etc/passwd
# 删除安装的软件包
rpm -e firefox
# 强制删除安装的软件包(尽量不用)
rpm -e --nodeps firefox
# 安装rpm包,需要按下面步骤找安装包
rpm -ivh firefox
# i=install 安装
# v=verbose 提示
# h=hash 进度条
# 虚拟机 -> 设置 -> CD/DVD -> 浏览 -> CentOS-7-x86_64-DVD-2003.iso -> cd /media/Centos../ -> cp 包 /opt/

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

# 查看yum服务器是否有需要安装的软件
yum list | grep firefox
# 安装yum包
yum install firefox
# 卸载yum包
yum uninstall firefox

猜你喜欢

转载自blog.csdn.net/cxhblog/article/details/113992746