Linux基础知识梳理

Linux基础知识梳理

Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux是一套免费使用和*传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE
------------------
Linux的特点:
Linux中一切都是文件.Linux中不根据文件的后缀区分文件的类型

能说出Linux中常见的系统目录及作用

/bin:是Binary的缩写,这个目录存放着系统必备执行命令
/boot:这里存放的是启动Linux时使用的一些核心文件
/dev:Device(设备)的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:所有的系统管理所需要的配置文件和子目录。
/home:存放普通用户的家目录,在Linux中每个用户都有一个自己的家目录,
/lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备默认挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root:系统管理员的家目录
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:类似于Windows上的防火墙
/tmp:存放临时文件的目录
/usr: 用户的应用程序安装的默认目录,类似与windows下的program files目录。
/var:存放一些经常被修改的目录放在这个目录下。包括各种日志文件。

对Linux系统中的目录和作用特别的熟悉

Linux基础知识梳理

Linux基础知识梳理

vim编辑器

yy 复制当前光标所在行
y数字y 从第几行复制到第几行
u 撤销上一步的操作
dd 删除当前光标所在行
d数字d 从光标开始删除到第几行

Shift + $ 移动到行尾
Shift + ^ 移动到行头

a 在光标后插入
i 在光标前插入
o 在当前光标的下一行插入

ESC 退出编辑模式

-------------------------
vi命令模式下操作:
/被查找的关键词 n 查找下一个 shift+n 向上查找
?被查找的关键词 n 查找上一个 shift+n 向下查找

:wq! 强制保存后退出
:wq 保存后退出

Linux防火墙

查看防火墙状态 service iptables status
临时关闭防火墙 service iptables stop
关闭防火墙开机启动 chkconfig iptables off
开启防火墙开机启动 chkconfig iptables on

查看防火墙开机启动状态 chkconfig iptables --list
-------------------------
Linux系统有7个运行级别(runlevel)
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登录后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

-------------------------
sync (功能描述:将数据由内存同步到硬盘中)

-------------------------
shutdown [选项] 时间
shutdown -h 关机 halt : 关闭系统
shutdown -r 重启 reboot:就是重启

设置系统在10分钟后关机,并将此次关机提示显示在屏幕上
shutdown -h 10 ‘This server will shutdown after 10 mins’

远程登录到Linux

Linux系统中是通过SSH服务实现的远程登录功能,默认ssh服务端口号为 22
常用的Linux远程登录终端:
SecureCRT, Putty, SSH Secure Shell,XShell

Linux帮助查看

man 帮助文档命令

help 查看Shell内置命令的帮助信息

Linux中常用的快捷键

ctrl + c:停止进程
ctrl+l:清屏
彻底清屏是:reset

Linux中常用的命令

pwd:显示当前工作目录的绝对路径)

打印/home 的工作路径 pwd /home

ls 列出目录的内容
-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来
-l :长数据串列出,包含文件的属性与权限

mkdir 创建一个新的目录
-p:创建多层目录,递归的创建目录

rmdir 删除一个空的目录

touch 创建空文件

d ~或者cd :回到当前用户自己的家目录)
cd - :回到上一次所在目录
cd .. :回到当前目录的上一级目录)

cp 复制文件或目录
cp -r 递归的复制整个文件夹

rm 移除文件或目录
rmdir deleteEmptyFolder :删除空目录)
rm -rf deleteFile :递归删除目录中所有内容)

mv 移动文件与目录或重命名

cat 查看文件内容

tac查看文件内容,从最后一行开始显示

more 查看文件内容,一页一页的显示文件内容

less 查看文件内容
/字串 :向下搜寻『字串』的功能;n:向下查找;N:向上查找;
?字串 :向上搜寻『字串』的功能;n:向上查找;N:向下查找;

head查看文件内容
head -n 10 文件 (功能描述:查看文件头10行内容,10可以是任意行数)

tail 查看文件内容
-------------------------
重定向命令
> 覆盖写入重定向
>> 追加写入重定向

-------------------------
echo 打印字符串到屏幕上

ln软链接

history 查看所敲命令历史

date显示当前时间
(1)date :显示当前时间)
(2)date +%Y :显示当前年份)
(3)date +%m :显示当前月份)
(4)date +%d :显示当前是哪一天)
(5)date +%Y%m%d date +%Y/%m/%d … :显示当前年月日各种格式 )
(6)date "+%Y-%m-%d %H:%M:%S" :显示年月日时分秒)
用指定的格式显示时间
date "+%Y-%m-%d %H:%M:%S"
2017-06-19 20:54:58

date -s 字符串时间 设置系统的时间

(1)date -d '1 days ago' (功能描述:显示前一天日期)
(2)date -d yesterday +%Y%m%d (同上)
(3)date -d next-day +%Y%m%d (功能描述:显示明天日期)
(4)date -d 'next monday' (功能描述:显示下周一时间)

-------------------------
cal查看日历

Linux系统中用户与组管理

useradd 添加新用户
passwd 设置用户密码
id 判断用户是否存在
-------------------------
su 与su - 的区别

userdel 删除用户
userdel -r 用户名 删除用户的时候也删除用户的家目录
-------------------------
who 查看登录用户信息

whoami 显示当前登录系统的用户名称
who 查看当前有哪些用户登录到了系统上

cat /etc/passwd 查看创建了哪些用户

usermod修改用户所属组
groupadd 新增组
groupdel删除组
groupmod修改组
cat /etc/group 查看创建了哪些组
-------------------------
chmod 修改文件或目录的权限

文件: r-查看;w-修改;x-执行文件
目录: r-列出目录内容;w-在目录中创建和删除;x-进入目录
删除一个文件的前提条件:该文件所在的目录有写权限,你才能删除该文件。
-------------------------
chown改变所有者
-R:表示递归修改文件夹中的所有文件的所有者和组

-------------------------
chgrp改变所属组

硬盘分区

fdisk -l :查看当前硬盘的分区详情
-------------------------
df查看硬盘信息
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :显示文件系统类型,连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示

-------------------------
mount/umount挂载/卸载
Linux 挂载
对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根目录、一个独立且唯一的文件结构
Linux中每个分区都是用来组成整个文件系统的一部分,她在用一种叫做“挂载”的处理方法,它整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来,要载入的那个分区将使它的存储空间在这个目录下获得。

-------------------------
find 查找文件或者目录

管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理

grep 过滤查找
-------------------------

Linux进程

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

ps查看系统中所有进程
ps -aux :查看系统中所有进程)
-------------------------
top查看当前系统的健康状态,默认是3秒更新一次命令的执行结果

Swap:交换分区(虚拟内存)
Mem:物理内存
running 正在运行的进程数
sleeping 睡眠的进程
stopped 正在停止的进程
zombie 僵尸进程

-------------------------
pstree查看进程树

kill终止进程
kill -9 pid进程号 表示强迫进程立即停止
-------------------------
netstat显示网络统计信息

netstat -anp (功能描述:此命令用来显示整个系统目前的网络情况。例如目前的连接、数据包传递数据、或是路由表内容)

查看端口50070的使用情况
netstat -anp | grep 50070

tar打包

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

压缩:tar -zcvf XXX.tar.gz n1.txt n2.txt
解压:tar -zxvf XXX.tar.gz -C 解压目的地

-------------------------
service后台服务管理
1)查看指定服务的状态 service network status
2)停止指定服务 service network stop
3) 启动指定服务 service network start
4)重启指定服务 service network restart
5)查看系统中所有的后台服务 service --status-all

-------------------------
chkconfig设置后台服务的自启配置
1)查看所有服务器自启配置 chkconfig
2) 关掉指定服务的自动启动 chkconfig iptables off
3)开启指定服务的自动启动 chkconfig iptables on

Linux计划任务

crond系统定时任务
crontab
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab任务

第一个“*” 一小时当中的第几分钟 0-59
第二个“*” 一天当中的第几小时 0-23
第三个“*” 一个月当中的第几天 1-31
第四个“*” 一年当中的第几月 1-12
第五个“*” 一周当中的星期几 0-7(0和7都代表星期日)

* 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
, 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令

RPM软件包管理

rpm -qa (功能描述:查询所安装的所有rpm软件包)
rpm -qa | grep rpm软件包 查询指定的软件包
rpm -e RPM软件包 卸载一个软件包

安装一个软件包
rpm -ivh RPM包全名
-i=install,安装
-v=verbose,显示详细信息
-h=hash,进度条
--nodeps,不检测依赖进度

Linux中的Shell脚本

写一个简单的脚本
脚本以 #!/bin/bash 开头

#!/bin/bash
# 脚本的注释:打印helloworld
echo "helloworld"

执行一个脚本前需要先给这个脚本设定一个执行权限
chmod 777 helloworld.sh
./helloWorld.sh
或者
bash helloWorld.sh
-------------------------
Linux Shell中的变量分为,系统变量和用户自定义变量。
系统变量:系统变量:$HOME、$PWD、$SHELL、$USER

-------------------------
设置环境变量
(1)export 变量名=变量值 :设置环境变量的值)
(2)source 配置文件 :让修改后的配置信息立即生效)
(3)echo $变量名 :查询环境变量的值)
-------------------------
Shell脚本中的位置参数
位置参数变量
$n (功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
$# (功能描述:这个变量代表命令行中所有参数的个数)

写一个简单的参数小脚本
#!/bin/bash
echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "$#"

-------------------------
常用判断条件
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于

2)按照文件权限进行判断
-r 有读的权限
-w 有写的权限
-x 有执行的权限

3)按照文件类型进行判断
-f 文件存在并且是一个普通文件
-e 文件是否存在
-d 目录是否存在

示例:
23是否大于等于22
[ 23 -ge 22 ]
(2)student.txt是否具有写权限
[ -w student.txt ]
(3)/root/install.log目录中的文件是否存在
[ -e /root/install.log ]
-------------------------
流程控制语句:
if判断

if [ 条件判断式 ]
then
程序
fi

写一个简单的小脚本,判断输入的数是否等于123,是否等于456
#!/bin/bash

if [ $1 -eq "123" ]
then
echo "123"
elif [ $1 -eq "456" ]
then
echo "456"
fi
-------------------------
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

写一个简单的case判断小脚本
!/bin/bash

case $1 in
"1")
echo "1"
;;

"2")
echo "2"
;;
*)
echo "other"
;;
esac

-------------------------
for循环
for 变量 in 值1 值2 值3…
do
程序
done

写一个简单的小脚本,打印输入的参数
#!/bin/bash
#打印数字

for i in "$*"
do
echo "The num is $i "
done

for j in "$@"
do
echo "The num is $j"
done

第二种for循环
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done

写一个简单的小脚本
#!/bin/bash

s=0
for((i=0;i<=100;i++))
do
s=$[$s+$i]
done
echo "$s"
-------------------------
while循环
while [ 条件判断式 ]
do
程序
done

写一个简单的小脚本
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
s=$[$s+$i]
i=$[$i+1]
done

echo $s
-------------------------
read读取控制台输入
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒)

Yum软件仓库

YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

为什么需要学会配置本地Yum源
YUM源虽然可以简化我们在Linux上安装软件的过程,但是生产环境通常无法上网,不能连接外网的YUM源,所以就无法使用yum命令安装软件了。为了在内网中也可以使用yum安装相关的软件,就要配置yum源。

YUM源其实就是一个保存了多个RPM包的服务器,可以通过http的方式来检索、下载并安装相关的RPM包。

yum的常用命令:
yum install -y rpm软件包
yum list :列出所有可用的package和package组)
yum list :列出所有可用的package和package组)
yum clean all :清除所有缓冲数据)
yum deplist rpm软件包 :列出一个包所有依赖的包)
yum remove rpm软件包 :删除httpd)
-------------------------

上一篇:Java 之 JavaScript (一)


下一篇:git完全cli指南之详细思维导图整理分享