本文将介绍学习Linux的入门基础知识与操作,文末附有补充的学习Linux的相关资料书籍。
Linux简介:
Linux 是一个免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 性能稳定的网络操作系统。
linux的内核最初是由一个芬兰的大学生因为个人兴趣爱好而编写的,这个大学生的名字叫林纳斯·托瓦兹(Linus Torvalds)经过广大程序工作者不断完善,开源集成。目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。其中CentOS是一个企业级的发行版,特别适合对稳定性,可靠性和功能要求较高用户
Linux的根目录为: /
/ 根目录,一般根目录下只存放目录,不要存放文件,也不要修改,或者删除目录下的内容Linux系统根目录下主要目录有:
/bin、/boot、/dev、/etc、/home、/lib、/mnt、/opt、/proc、/root、/sbin、/tmp、/usr、/var、/lost+fount 等
具体的主要目录介绍如下:
命令 | 功能说明 | 举例 |
---|---|---|
ssh | 远程安全登录方式 | ssh 192.168.***.131 |
id | 查看用户 | id root |
who | 当前在本地系统上的所有用户的信息 | whoami ; who |
w | 查询系统信息 | w |
hostname | 查看主机名 | hostname |
uname | 查询主机信息 | uname -a |
ping | 查看网络是否通畅 | ping 192.168.***.131 |
netstat | 查看网络端口的使用情况 | netstat -tunlp |
安装netstat命令: | yum -y install net-tools | |
查看网络端口的使用情况 | -t :显示tcp端口 | |
查看网络端口的使用情况 | -u :显示UDP端口 | |
查看网络端口的使用情况 | -n :指明拒绝显示别名 | |
查看网络端口的使用情况 | -l :指明listen的 | |
查看网络端口的使用情况 | -p :指明显示建立相关连接的程序名 | |
ps | 显示所有进程信息。 ps 与grep 常用组合用法,查找特定进程 | ps -ef l grep nginx |
ps -ef I grep nginx | ||
kill | 杀死进程 | kill -9 top |
top | 监控Linux系统状况,比如cpu、内存的使用 | 按住键盘q退出 |
du | 统计大小 | du -sh ; du -sh * |
firewall-cmd | 查看防火墙的状态 | firewall-cmd --state |
centos 7 关闭防火墙: | systemctl stop firewalld.service | |
echo | 判断上一条命令是否正确 | echo $? |
exit | 退出命令 |
命令 | 功能说明 | 举例 |
---|---|---|
touch | 创建一个新文件 | touch 123.txt |
mkdir | 创建一个新文件夹 | mkdir -p /tmp/XD/XD/class |
cp | 拷贝文件 | cp 123.txt class/ ; cp -a 123.txt class/789.txt |
mv | 移动或者更名现有的文件或目录 | mv 123.txt 345.php ;mv 789.txt /home/987.php |
rm | 删除文件或者目录 | rm 987.php ;rm -rf 456.txt |
cd | 切换目录 | cd /usr/local/; cd …; |
ls | 列出目录内容 | ls -ltr ;ls -lrt /home/ |
pwd | 查询所在目录 | pwd |
cat | 查看小文件内容 | cat -n 123.txt |
more | 查看大文件内容 | more System.map-3.10.0-123.el7.x86_64 |
head | 查看文件的前面N行 | head -20 System.map-3.10.0-123.el7.x86_64 |
tail | 查看文件的后面N行 | tail -f access.log ;tail -20 access.log |
diff | 对比文件差异 | diff 123.txt 456.txt |
wc | 统计行 | wc -l 123.txt |
grep | 查找文件里符合条件的字符串 | grep ‘119.4.253.206’ 123.txt |
查找文件里符合条件的字符串 | -n:输出行数 grep -n ‘80.82.70.187’ 123.txt | |
查找文件里符合条件的字符串 | -w:精确匹配 grep -w ‘113.66.107.198’ 123.txt | |
查找文件里符合条件的字符串 | -i:忽略大小写 grep -i ‘IP:113.66.107.198’ 123.txt | |
查找文件里符合条件的字符串 | -v:反向选择 grep -v ‘113.66.107.198’ 123.txt | |
find | 查询文件 | find / -name -type f 123.txt |
uniq | 对排序好的内容进行统计 | uniq -c 123.txt |
命令 | 功能说明 | 举例 |
---|---|---|
df | 文件系统的磁盘使用情况统计 | df -h |
free | 查看系统内存 | free -m ; free -h |
cal | 查看日历 | cal 2021 |
man(ls --help) | 查看帮助文档 | man ls |
help | 查看内部命令帮助 | help if |
clear | 清屏 | clear ; CTRL + l |
echo | 标准输出命令 | echo “this is echo 命令” |
- vi的基本概念:(三种模式)
进入方式:
- 在命令行模式中的操作:(#后为命令含义)
$ #移动到这一行的行尾
gg #移动到文档第一行行首
G #移动到文档最后一行行首
x #删除内容,删除一个字符
dd #删除游标所在的那一整行
u #复原原来的操作
v #选中范围按y即复制
p #粘贴
n #n为数字。光标移动到第n 行
/ #寻找内容
**%s/word1/word2/g #从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
n1,n2s/word1/word2/g #n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代
为 word2
set nu #显示行号
set nonu #取消行号
Command 模式是vi或vim的默认模式,如果我们处于其它命令模式时,要通过ESC键切换过来。
当我们按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令;
:w 保存;
:w filename 另存为filename;
:wq! 保存退出;
:wq! filename 注:以filename为文件名保存后退出;
:q! 不保存退出;
:x 应该是保存并退出 ,功能和:wq!相同
Linux是一个多用户、多任务的操作系统,linux用户的分类:
- 关于用户的相关配置文件
test :x :1000 :1000 : :/home/test :/bin/bash
用户 密码占位符 UID GID 用户描述 用户家目录 登录后使用的shell解释
- 添加用户指令:
-u #指定用户UID
-d #指定用户主目录
-g #指定用户所属组
-r #指定用户是系统用户
-s #用户登录shell解释器
-M #不创建主目录
useradd -u 1010 -d /home/XD -g root -s /bin/bash XD
如下:
bash-4.2$
bash-4.2$
解决:复制相关信息到家目录
cp -r /etc/skel/.bash* /home/XD/
- 删除用户命令:userdel
添加用户组命令:groupadd
删除用户组命令:groupdel
-u #指定用户UID
-d #指定用户主目录
-g #指定用户所属组
passwd XD
echo "123456" | passwd --stdin XD
135088935 -rw-------. 1 root root 1778 Oct 1 2020 yum.log
135088935 | - | rw------- | 1 | root | root | 1778 | Oct 1 2020 | yum.log |
---|---|---|---|---|---|---|---|---|
第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 | 第七列 | 第八列 | 第九列 |
- 第一列:i 节点;i节点可以理解文件id,一个i节点号可以对应多个文件,一个文件只能对应一个i节点号
- 第二列:文件的类型与权限
“ - ” #代表的是文件;d #代表是目录; l #软链接文件 ;b #代表块设备;c #代表的是硬件设备(键盘)
r:表示读权限 ;w:表示写权限;x:表示执行权限
4:表示读权限 ;2:表示写权限;1:表示执行权限
rw-------:分为三列 rw- — ---,第一列为所属者的权限,第二列为所属组的权限,第三列:为其它的权限- 第三列:有多少文件名链接到这个节点
- 第四列:文件的所有者
- 第五列:文件的所有组
- 第六列:容量大小,单位默认为B
- 第八列:创建或最近修改的时间
- 第九列:文件名
若一个文件夹右上角有锁住的标识,文件夹地址为 : /home/wupk/cd
修改文件权限为777,则在终端输入:
chmod 777 /home/wupk/cd
文件夹的权限就变为了777。
第一位 | 第二位 | 第三位 |
---|---|---|
7 | 7 | 7 |
设置文件所有者访问权限 | 设置群组访问权限 | 设置其他人访问权限 |
r:表示读权限 ;w:表示写权限;x:表示可执行权限
4:表示读权限 ;2:表示写权限;1:表示可执行权限
- 单独一位上的权限
- 文件所有者访问权限为7时,7用“rwx”表示 {4®+2(w)+1(x)=7}:
- 设置群组访问权限数值为6,则用“rw-”表示 {4®+2(w)+0(x)=6;
- 设定其他用户的访问权限为 “r–”,则数值为4+0+0=4
理解:将rwx看成二进制数,如果有则用1表示,没有则有0表示,那么rwx则可以表示成为:111 ,而二进制的111就是7。
权限 | 对应的数值 | 终端命令 | 权限含义 |
---|---|---|---|
rwx rw- r– | 764 | chmod 764 test.txt | |
rw- r– r– | 644 | chmod 644 test.txt | 即设定文件 test.txt 的属性为:-rw-r–r--文件属主(u)拥有读、写权限与文件属主同组人用户(g) 拥有读权限其他人(o) 拥有读权限 |
r- r- r- | 444 |
- u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
- + 添加某个权限。
- - 取消某个权限。
- = 赋予给定权限并取消其他所有权限(如果有的话)。
chmod a+x nice.txt
文件所有者、文件所有者的同组用户 以及其他用户 都增加执行权限
chmod ug+w,o-x nice.txt
文件所有者、文件所有者的同组用户增加写权限、其他用户删除执行权限
-R #递归的意思
chmod -R 777 /home/XD/*
chmod u+x,g+w,o+w boot.log
chmod u-x,g-w,o-w boot.log
chmod 777 boot.log
eg:更改文件目录XD 的所属者为root用户 跟 所属组为XD组
chown -R root:XD XD
- 文件归档:
文件归档也称之为打包,指的是一个文件或者多个文件或者目录的一个集合,这个集合储存在一个文件中。归档文件是没有进行压缩的,所以占用的空间是所有文件或者目录的总和。工作中经常与压缩结合在一起使用
- 文件压缩:节约磁盘空间,加快文件的传输速率
- gzip:
不能压缩目录,只能压缩文件,压缩速度最快,但是压缩比例比较低。扩展名:.gz
不保留源文件压缩:gzip 123.txt
保留源文件压缩:gzip -c 345.txt > 345.txt.gz
不保留源文件的解压:gunzip 123.txt.gz
保留原文件的解压:gunzip -c 345.txt.gz > 234.txt
不保留源文件解压:gzip -d 345.txt.gz
- xz :
可以压缩目录和文件压缩的速度比较慢,但是压缩比例最高。扩展名:.xz
不保留源文件压缩:xz 123.txt
保留源文件压缩:xz -c 345.txt > 345.txt.xz
不保留源文件的解压:unxz 345.txt.xz
保留原文件的解压:xz -d -k 123.txt.xz
不保留源文件解压:xz -d 123.txt.xz
-c #创建新文件
-f #指定文件格式
-v #显示详细过程
eg:tar -cf vmware.tar vmware-tools-distrib;tar -cvf vmware-tools.tar vmware-tools-distrib
-z #以gzip方式归档压缩 eg:tar -zcvf vmware-tools.tar.gz vmware-tools-distrib
-J #以xz方式进行归档压缩 eg:tar -Jcvf vmware-tools.tar.xz vmware-tools-distrib;tar -Jcvf
/home/XD/vmware-tools.tar.xz vmware-tools-distrib
-v #解档解压操作 tar -xf vmware-tools.tar.xz
-C #指定解压路径
[root@localhost ~]# ps -ef | more
UID PID PPID C STIME TTY TIME CMD
root 2 0 0 Jul30 ? 00:00:00 [kthreadd]
root 3 2 0 Jul30 ? 00:00:06 [ksoftirqd/0]
root 5 2 0 Jul30 ? 00:00:00 [kworker/0:0H]
root 7 2 0 Jul30 ? 00:00:04 [migration/0]
root 8 2 0 Jul30 ? 00:00:00 [rcu_bh]
root 9 2 0 Jul30 ? 00:00:00 [rcuob/0]
root 10 2 0 Jul30 ? 00:00:00 [rcuob/1]UID:用户ID
PID:进程ID
PPID:父进程号
C:CPU的占用率
STIME:进程的启动时间
TTY:TTY终端
TIME:进程执行起到现在总的CPU占用时间
CMD:启动这个进程的命令
[root@localhost ~]# ps aux | more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S Jul30 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Jul30 0:06 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Jul30 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S Jul30 0:04 [migration/0]
root 8 0.0 0.0 0 0 ? S Jul30 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S Jul30 0:00 [rcuob/0]
root 10 0.0 0.0 0 0 ? S Jul30 0:00 [rcuob/1]
root 11 0.0 0.0 0 0 ? S Jul30 0:00 [rcuob/2]USER:哪个用户启动了这个命令
PID:进程的ID
%CPU:CPU的占用率
%MEM:内存的使用率
VSZ:如果一个程序完全驻留在内存中一共需要使用多少内存空间
RSS:进程当前占用了多少内存
TTY:tty终端
STAT:表示当前进程的状态(S#处于休眠的状态;D#不可中断的状态 ;Z#僵尸进程 ;X#死掉的进程)
START:启动这个命令的时间点
TIME:进程执行起到现在总的CPU占用时间
COMMAND:启动这个进程的命令
简介:介绍rpm软件包的管理
rpm安装:安装别人编译好的软件包,rpm即Redhat Package Manager,是Redhat的软件包管理方式
rpm安装优点:
- 软件已经编译打包,所以传输和安装方便,让用户免除编译
- 在安装之前,会先检查系统的磁盘、操作系统版本等,避免错误安装
- 软件包安装的环境必须与打包时的环境一致或相当
- 必须安装了软件的依赖包
- which-2.20-7.el7.x86_64.rpm
which #代表的是软件名称
2.20 #代表的是软件版本号;
7 #代表的是发布版本号,指的是这个rpm软件包是第几次编译生成的
el7 #代表的是企业版的7操作系统
X86 #代表的是CPU架构
64 #代表的是系统的位数
-i #install 安装软件包
-v #输出更多的详情信息
-h #输出哈希标记(#)
–nodeps #不验证软件的依赖
rpm -ivh zsh-5.0.2-7.el7.x86_64.rpm
rpm -ivh mariadb-server-5.5.35-3.el7.x86_64.rpm --nodeps
http://rpmfind.net/
http://rpm.pbone.net/
http://www.rpmseek.com/index.html
- -a #查询所有已安装的软件包 rpm -qa zsh
-f #查询文件所属软件包 rpm -qf /usr/bin/zsh
-p #查询软件包
-i #显示软件包信息
-l #显示软件包中的文件列表
-d #显示被标注为文档的文件列表
-c #显示被标注为配置文件的文件列表
-U #升级rpm软件服务
eg: rpm -Uvh zsh-5.0.2-7.el7.x86_64.rpm
-e #卸载
eg: rpm -e zsh
yum软件包的管理并配置本地yum源
- 配置本地yum源:
配置文件的路径:/etc/yum.repos.d/
- [Centos7-yum] #yum源名称,唯一的,用来区分不同的 yum 源
name=Centos7-source #对yum源描述信息
baseurl=file:///mnt #yum源的路径(repodata目录所在的目录)
enabled=1 #表示启用 yum 源
gpgcheck=0 #为1表示使用公钥检验 rpm 的正确
- yum repolist #查看yum源列表
yum clean all #清空之前yum缓存
yum makecache #创建yum缓存,为后续安装更加快速
yum -y install #安装软件 yum -y install zsh
yum info zsh #查看zsh软件包信息(不管安装了没都会有信息)
yum info installed zsh #查看已经安装好的软件信息
yum -remove zsh #卸载软件
yum search gcc #搜索gcc软件
yum update #升级软件
- 源码编译安装软件包的管理
源码安装优点:编译安装过程,可以设定参数,指定安装目录,按照需求进行安装,指定安装的版本,灵活性比较大。
源码安装的缺点:需要对依赖包一个一个的进行安装,不敢随便升级,一升级可能会由于依赖包的是不能使用导致一系列连锁反应。
源码编译安装软件包4大步骤:
- 1.解压源码包
tar -xf 源码包- 2.配置
进入解压后的目录,用./configure命令来配置相关信息
(比如指定安装目录 --prefix=/usr/local/nginx)和生成Makefile文件- 3.编译
make -j4- 4.安装
make install
- 介绍shell脚本的重要性与应用场景
- Shell是一种脚本语言,又是一种命令语言。可以通俗一点来讲,Shell脚本就是一系列命令的集合,可以在Unix/linux上面直接使用,并且直接调用大量系统内部的功能来解释执行程序把一些重复性工作交给shell做,来实现自动化运维。Shell 虽然没有C/C++、Java、Python等强大,但也支持了基本的编程元素。例如:if、for、while、case等循环,还有变量、数组、字符串、注释、加减乘除逻辑运算等
- shell、perl、php、python
- 易用 #直接在linux系统上使用,不需要编译
高效 #程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务
简单 #语法和结构比较简单,易于掌握
- 监控linux系统的健康度
- 数据的处理 #日志的切割、分析、统计等
- 与数据库交互 #对数据库进行增,删,改,查等操作
- 监控进程,自动化启停服务
- 完成一些重复性的工作
① 编写:vi first.sh
# !/bin/bash
# 作者:******
# 编写时间:*******
# 功能:this is my first shell !
echo "this is my first shell !"
② 执行:
sh first.sh
chmod 755 first.sh
./first.sh
MobaXterm安装过程(在windows下连接linux服务器).
WinSCP下载安装及使用教程(实现Windows和Linux两个操作系统下的文件互传).
https://blog.csdn.net/Kefenggewu_/article/details/119083758.
ctrl +alt +t 打开终端窗口
ctrl + shift + t 打开并列的终端窗口
ctrl + shift + = 放大终端窗口的字体显示
ctrl + - 缩小终端窗口的字体显示
善用tab键可以是补全文件名或者路径以及显示文件夹下包含的所有文件。
- 终端中的复制/粘贴:
Shift+Ctrl+C:复制
Shift+Ctrl+V:粘贴
链接:https://pan.baidu.com/s/1obDnNnyVP0tct8LtzJLi0w
提取码:xntf
**