Linux入门学习

目录

一、Linux体验

二、Linux入门

2.1 什么是Linux

2.2 Linux基础安全介绍

2.2.1 什么是SSH

2.3 Linux文件系统

2.3.1 目录结构

2.3.2 操作文件的常用命令

 三、Linux基础

3.1 用户类型

3.2 什么是Shell

3.3 设置主机名

3.4 命令别名

3.5 命令格式

3.6 会话管理

3.6.1 echo

3.6 常用命令

3.7 帮助命令

 3.8 文件管理

四、实用指令

五、组

5.2 rwx权限

5.3 修改权限方式

 六、crond定时调度

 6.2 at定时任务

 七、Linux分区

7.1 添加磁盘分区

 八、网络配置

8.1 Nat网络模型

 8.2 配置固定IP

九、Linux进程管理

9.1 进程管理基本指令

9.2 服务

常见服务

9.3 动态监控命令

 十、RPM和YUM

10.1 RPM

10.2 YUM

 十一、Shell编程

11.1 为什么学习shell

11.2 shell入门

 11.3 Shell中的变量

 11.4 运算符

11. 5 条件判断

 11.6 循环判断

十二、日志管理

12.1 常用系统日志


一、Linux体验

    初体验命令:

hostname -i查看当前用户ip地址
free -h查看占用内存
reboot重启
init 3切换字符界面
init 5切换图形界面
who am i

查看当前用户信息

shutdown -h now

立即关机

shutdown -h 11分钟之后关机
sync把内存中的数据同步到磁盘;建议关机重启前使用sync

二、Linux入门

2.1 什么是Linux

Linux 是一种自由的开放源代码的类 Unix 操作系统

常说的Linux是Linux内核, 而Unbuntu, CentOS等都是基于Linux的发行版

2.2 Linux基础安全介绍

2.2.1 什么是SSH

SSH 全称 Secure Shell,是一种加密的网络传输协议;

可以创建安全的隧道用于客户端与服务器连接;

可以使用非对称加密进行验证从而提升整个连接的安全性;

2.3 Linux文件系统

2.3.1 目录结构

目录

描述

/

根目录

/bin

可执行文件,比如 ls 命令

/boot

引导程序文件,内核,以及 initrd 等文件, linux启动信息

/dev

设置文件,比如磁盘设备

/etc

系统范围的配置文件

/home

用户 home 目录,个人用户的配置

/media

可移除的媒体,cd-rom 等的挂载点

/lib 和 /lib64

/bin 和 /sbin 中用到的库文件存放位置

/mnt

临时挂载点

/opt

可选的用户应用包,一般用于存放一些直接提供二进制程序的非开源包

/proc

虚拟问价系统

/root

root 用户的 home 目录

/run

存放一些 pid 和 socket 文件

/sbin

系统的可执行文件,init ,mount 等

/sys

非FHS保准,但是大部分发行版都有,虚拟文件系统,用来对内核和设备驱动做设置

/usr

Unix Software Resource 绝大多数的程序和应用工具安装在这里,结果和/非常相似;可以理解为压缩包在/opt, 软件安装在/usr/local

/usr/bin

可执行的而进制文件

/usr/lib

相应的库文件

/usr/share

和计算机架构无关的一些共享文件

/usr/src

源代码存放路径,如Linux 内核源码

/var

在程序运行中内容不断变化的文件,比如日志

/tmp

临时文件系统,重启后内容丢失

2.3.2 操作文件的常用命令

命令

作用

ls

list列出目录内容

cat

输出文件内容到标准输出

less

查看文件内容

more

查看文件内容

head

查看文件头部, 默认查看前10行

head -n 5 文件名查看文件头部指定行数的内容

tail

查看文件尾部

tail -f 文件名监听文件内容是否修改,添加的内容会输出到控制台

nano

编辑文件的工具

grep

查找文本中指定关键词的行

 三、Linux基础

3.1 用户类型

Linux中分为普通用户和超级用户 root, 但是划分并不依据root的名称;而是每个用户都会有一个UID, 如果UID = 0就是超级用户

tty  # 可以查看当前终端名称

who  # 查看链接本服务器的所用用户

w  # 可以查看链接用户正在执行什么操作
useradd 用户名添加一个用户,默认用户目录在/home/用户名
passwd 用户名修改用户名的密码
pwd显示当前用户所在的目录的绝对路径
userdel 用户名删除用户,但是保留用户的home目录
userdel -r 用户名删除用户,并且连带用户的home目录
id 用户名查询用户id
groupadd 组名创建一个用户组
groupdel 组名删除一个用户组
useradd -g 组名 用户名添加一个用户名并分配组
usermod -g 组名 用户名将用户切换一个组

3.2 什么是Shell

交互式接口,是Linux中的用户界面,而shell能接受用户的命令并送入内核执行,解析命令。

常见的shell: sh, bash, csh 等

echo $SHELL  # 查看当前使用的shell

cat /etc/shells  # 查看支持的所有shell

3.3 设置主机名

hostname NAME  # 更改主机名,临时

hostnamectl set-hostname NAME  # 永久生效,支持CentOS7以上,Unbutu

unbuntu中 .bashrc中可以修改命令提示符信息

enable  # 可以查看所有内部命令

type VALUE  # 判断VALUE是什么命令

内部命令都执行在 /bin/bash中,系统启动自动加入内存 

命令执行过程:

        内部命令  -》 外部命令  -》 hash, 查找缓存  -》 $PATH -》 command not found

3.4 命令别名

alias ALIAS_NAME='NEW_NAME'  # 更改别名

alias  # 查看别名

\alias_name  # 用于别名原始命令,但是需要临时使用原始命令

3.5 命令格式

可以主动在命令后面使用 \ 表示提前换行 

3.6 会话管理

screen / tmux

3.6.1 echo

打印信息;后面可以跟字符串或变量

 -e 操作使后面转义操作生效

3.6 常用命令

lscpu  # 查看cpu资源情况

lsblk  # 查看硬盘信息

arch  # 系统架构  x86_64 / x86_32

cat /etc/os-release  # 查看操作系统版本

date  # 显示和设置系统时间

clock  # 显示硬件时钟

clock -s  # 以硬件时间修正系统时间
clock -w  # 以系统时间修正硬件时间

3.7 帮助命令

whatis  cmd  # 查看cmd的使用

help cmd  # 查看内部命令

cmd --help  # 外部命令

 3.8 文件管理

Linux中文件后缀并不严格,只关注内部内容;但是可以使用 file 命令查看具体的文件类型

四、实用指令

mkdir 目录名创建一个目录
mkdir -p 目录名1/目录名2创建多级目录
rmdir 目录名删除目录
rmdir -rf 递归强制删除
touch 文件名创建一个空文件
cp source dest拷贝文件到指定位置
/cp 拷贝并直接覆盖
mv

移动文件与目录或重命名

cat查看文件内容
cat | more其中 | 表示管道命令,可以将前一个的结果交给后面处理
重定向,改变文件输出的位置,写入的内容覆盖原来的内容
>>文件内容追加
ln -s

软链接/符号链接,类似wins中的快捷方式

history查看所有历史命令
find

从指定目录递归遍历子目录,寻找满足条件的目录

+n 表示大于; -n表示小于; 文件单位:k, M, G

locate快速定位文件路径;locate会从自己的locate数据库进行查询;因此使用这个命令之前需要执行:updatedb 创建locate数据库
which查看指令在哪个目录
grep

过滤查找,配合管道符 | , 将前一个命令的指令传递给后面的命令

gzip/gunzip压缩和解压文件;压缩后的后缀为:*.gz
zip/unzip用于项目打包进行压缩
tar

通过选项确定打包还是压缩;

打包:-zcvf    解压:-zxvf

五、组

Linux中,所有用户必须属于一个组;默认创建为与同户名同名的组

所有者:一般为文件的创建者   

ls -ahl查看文件的组信息
chown 用户名 文件名修改文件所有者
chgrp 组名 文件名修改所在组
chgrp -R 组名 文件名递归修改所在组

当用户创建一个文件后,这个文件的所在组就是该文件的所在组

5.2 rwx权限

[r] : 可读    [w] : 可写    [x] : 可执行

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

5.3 修改权限方式

  • 第一种:

  •  第二种:通过数字变更权限

 六、crond定时调度

crond 任务调度,在系统某个时间执行特定的命令或程序;

crontab进行定时任务的设置
crontab -e编辑任务调度
crontab -r终止任务调度
crontab -l列出有任务的调度
service crond restart重启任务调度

 6.2 at定时任务

at命令是一次性定时计划任务;在达到预设时间(60s)时候完成一次后不再继续执行

 七、Linux分区

Linux将每一个文件目录与一块磁盘分区进行对应,这个操作称为挂载

lsblk -f查看磁盘分区信息
fdisk /dev/磁盘名设置分区
mkfs -t ext4 /dev/分区名分区格式化
mount将分区挂载到文件系统
umount卸载分区和文件系统的关联
df -h查看分区整体情况
du -h 目录名查询指定目录下磁盘占用情况;不指定默认当前路径

可以通过修改/etc/fstab文件,添加UUID,完成永久挂载

7.1 添加磁盘分区

1. 添加磁盘

 选择SCSI类型,然后点击下一步,磁盘大小可以自定义

 

 添加成功后,重启Linux

 输入命令:lsblk,查看磁盘状态

 输入命令:fdisk /dev/sdb ,添加分区,然后输入n

 选择主分区,并添加一个分区

 

 然后一直回车,最后输入一个 w,表示写入磁盘并退出

 分区分配后,进行格式化

 mkfs -t ext4 /dev/sdb1 进行格式化:

 挂载文件系统

 

 八、网络配置

8.1 Nat网络模型

 8.2 配置固定IP

虚拟机配置,选择Nat网络

打开虚拟网络编辑器

记录这里的数值(也可以修改)

 打开LInux编辑:vi /etc/sysconfig/network-scripts/ifcfg-ens32 

 重启服务:service network restart 或者 reboot

九、Linux进程管理

9.1 进程管理基本指令

进程:简单理解为一段运行中的程序

ps

查看所有进程

ps -ef以全格式显示所有进程信息
kill PID终止进程; 选项-9可以强制终止进程
killall 进程名称通过进程名称终止进程
pstree

以树的形式显示所有进程之间的关系 [选项] -p(PID),

-u(用户)

 

9.2 服务

服务是能为系统或者用户提供某种特殊的服务的程序,只不过一般这种程序是常驻后台,不是直接运行的,这种程序一般叫做守护进程daemon

常见服务

  • SSH 用于能随时连接到服务器,提供这个服务的程序是 sshd
  • cron 提供定时任务的服务,提供这个服务的程序是 crond
chkconfig给某个服务的运行级别设置自动启动或关闭;在/etc/init.d中查看
chkconfig --list查看服务
chkconfig --level 5 服务名 on/off设置服务运行级别启动或关闭

systemd是一种init程序,用于初始化系统systemctl是相关联的功能用于提供了对服务的管理方式。 

systemctl [start/enable/disable/stop..] 服务名服务管理指令,一般使用这个;指令在/usr/lib/systemd/system中查看

systemctl status 服务名

查看某个服务的状态

systemctl start 服务名

启动某个服务

systemctl stop 服务名

停止某个服务

systemctl enable 服务名

设置某个服务开机启动

systemctl disable 服务名

禁用某个服务开机启动

systemctl restart 服务名

重启某个服务

 防火墙:

firewall-cmd --permanent --add-port=端口号/协议打开端口
firewall-cmd --permanent --remove-port=端口号/协议关闭端口
firewall-cmd --reload重新载入才能生效
firewalld-cmd --permanent --query-port=端口/协议查询端口是否成功打开
netstat -anp查看网络状态; -an 按一定顺序输出,-p 显示哪个进程在调用

netstat 用于查看网络状态,在网络变慢或者发现不知名连接需要特别关注

9.3 动态监控命令

top -i

与ps类似,可以监控进程的状态

 十、RPM和YUM

10.1 RPM

rpm是互联网下载包的打包和下载工具;应用于redhat, centos等

rpm -qa | grep xxx查询是否安装了某个rpm包
rpm -qa查询所有rpm包
rpm -qi xxx查询rpm的信息
rpm -ql xxx查询rpm包的文件信息,包括安装路径
rpm -e xxx删除某个rpm包
rpm -ivh xxx(全路径)安装rpm包; -i 安装 -v 提示信息 -h 进度条

10.2 YUM

基于RPM, 从指定服务器自动下载rpm安装包并且安装 

yum list | grep  xxx查询是否有xxx的rpm包
yum install xxx安装

 十一、Shell编程

11.1 为什么学习shell

 shell是一个命令解释器。通过shell解释器将程序发送的请求解析由Linux内核执行

而shell编程可以理解将多条指令组合成脚本,完成较为复杂的操作

11.2 shell入门

要求:

1. 脚本以 #!/bin/bash 开头,指明使用哪种解释器

2. 脚本必须具有可执行权限

  • 编写第一个脚本
vim ch01_hello_shell.sh
  • 分配可执行权限

  •  执行脚本

 11.3 Shell中的变量

1. 定义变量: 变量名=值            注意:中间不能有空格

2.撤销变量: unset变量

3. 声明静态变量: readonly 变量,不能unset

4. Shell中的变量一般为大写,一种规范

5.将命令返回值赋值给变量:使用 '指令',或者 $(指令)

#!/bin/bash
#Shell变量定义 变量=值; 中间不能有空格
#变量一般大写,一种规范
VAR1=10
echo $VAR1
#撤销变量 unset
unset VAR1
echo "VAR1的值:$VAR1"
#声明静态变量,关键字 readonly, 静态变量不能使用unset
readonly VAR2=11
echo "静态变量VAR2=$VAR2"
unset VAR2
echo "unset后的静态变量VAR2=$VAR2"

对静态变量使用Unset发生报错:

  • 设置环境变量:export 变量名=值,使用 source 配置文件,使修改后的环境变量立即生效
  • bash中的多行注释为     :<<! 内容 !
# 多行注释语法 :<<! 内容 !
:<<!
unset VAR2
echo "unset后的静态变量VAR2=$VAR2"
!
  •  位置参数变量,通过shell脚本获取终端中输入的参数
    • $n,  n为数字,$0表示命令本身,依次的:$1, $2 ...表示若干位置参数;10以上的参数使用${n}表示
    • $*  表示命令行中的所有参数,所以参数作为一个整体
    • $@  表示所有参数,但是区分
    • $#   表示参数的个数
#!/bin/bash
# 获取命令行中的参数信息 $n
echo "命令行参数分别为:$0, $1, $2"
echo "获取所有的参数:$*"
echo "参数个数为:$#"

 11.4 运算符

1. 使用 $((表达式)) 或者 $[表达式] ,  expr m + n  这里的m + n之间要有空格,不然被当做字符串

2. expr中使用的表达式,乘法要用 \*

#!/bin/bash
VAR1=10
VAR2=30
# 使用$((表达式))
RES1=$(($VAR1 + $VAR2))
echo "RES1=$RES1"
# 使用$[表达式]
RES2=$[$VAR1+$VAR2]
echo "RES2=$RES2"
RES3=`expr $RES1 + $RES2`
echo "RES3=$RES3"
RES4=`expr $RES3 \* $RES2`
echo "RES3*RES2=$RES4"

 注意:使用expr的时候,如果将结果赋值给变量,需要使用 `expr 表达式`, 并且由于是赋值变量,所以需要满足:变量名=值,中间不能有空格

11. 5 条件判断

        开始不适应了。。。

#!/bin/bash
# 1."ok"是否等于"ok"
if [ "ok" = "ok" ]
then
        echo "hello true"
else
        echo "hello false"
fi

# 2. 23 是否大于等于22
if [ 23 -ge 22 ]
then
        echo "大于等于 true"
fi
  •  一些判断条件的选项

  •  多分支判断
# 3.多分支条件判断
if [ $1 -ge 60 ]
then
        echo "及格"
elif [ $1 -lt 60 ]
then
        echo "不及格"
fi

  • case语句
#!/bin/bash
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other.."
;;
esac

 11.6 循环判断

#!/bin/bash
# 计算从1 到 100的和
SUM=0
for ((i = 1; i <= 100; i++))
do
        SUM=$[$SUM + $i]
done
echo $SUM

while的语法: while [ condition ] 

  • 读取控制台的输入:

  •  自定义函数语法:

 

#!/bin/bash

# 自定义函数:计算两数之和
function getSum() {

        SUM=$[$n1 + $n2]
        echo "SUM的值为:$SUM"

}
# 从控制台输入值
read -p "请输入第一个值n1=" n1
read -p "请输入第二个值n2=" n2

getSum $n1 $n2

十二、日志管理

12.1 常用系统日志

 可以查看 secure日志,记录用户的登录状态,是否登录成功

         Linux中通过rsyslogd服务监控日志的状态,通过配置文件/etc/rsyslogd.conf管理写入到那个日志中;

 rsyslogd服务记录的日志信息主要包括:

        1. 事件产生的时间

        2. 产生事件的主机名

        3. 产生事件的服务名或程序名

        4.事件的具体信息

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值