shell基础知识

linux 架构

linux历史回顾

Linux开始于GNU,当年的GNU已经完成了大部分系统相关的工作,但是就是没有内核。 后来,一个叫linus的人完成了一个可以被GNU对接的内核,取名叫做Linux。 所以说,严格来讲Linux只是一个操作系统内核,而不是一个真正的操作系统。

Linux操作系统的架构:

image.png

shell

通过架构图片我们可以看出,shell顾名思义,是用户可以与系统进行交互的一个界面。

shell脚本

我们通过shell这个操作系统的组成之一的应用程序实现了对操作系统内核的访问和控制。 但我们的访问需求往往是带有复杂逻辑的需求,简单的命令语句无法满足我们的需求,于是计算机先驱们又开发出了能够兼容shell命令的脚本编程语言。 这个语言就叫做shell(没错,和shell程序同名)。 因为二者基本上已经互为互补的关系,所以现在打开shell客户端基本上就默认运行在某一种shell环境下了。
为什么是”某一种shell”?

不同的shell环境

时代在发展,人们对shell的需求也在不断发展,所以就出现了各种不同的shell语言,这些语言都是在基础的shell语言上面发展起来的。
shell的分类主要有:zsh,bash,csh,tsh等等。
sh(Bourne shell)是第一个shell,也是unix上标准的shell。
linux默认使用bash,zsh是很多人喜欢用的shell版本。 各种shell之间基本一致。

切换shell

  1. 查看当前shell环境
  2. echo \$SHELL
  3. 切换shell环境
  4. chsh -s /bin/zsh
  5. 如果没有zsh在系统里面,我们需要提前安装zsh才能成功切换
  6. apt-get install zsh
  7. 安装之后可以再为zsh搭配一个好看的主题
  8. apt install git wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh sh install.sh

用户权限

新增

  1. adduser [name]

此时,系统会自动创建[name]用户/组,创建home/[user]目录

删除

userdel -r [name]

查看信息

id [name]

查看所有账号

cat /etc/passwd

查看组信息

cat /etc/group

将某个用户新加入某个组

usermod -aG [group] [user]
-a append 把用户追加到某些组中,仅与-G选项一起使用
-G 组

更改用户目录

usermod -d /home/bak/ zhangying

增加用户权限期限

usermod -e 05/06/13 zhangying

改名

usermod -l newuser1 newuser

锁定和解锁

usermod -L newuser1
usermod -U newuser1

文件权限

文件格式说明

Linux将文件的访问者分为

  • 文件拥有人
  • 文件拥有组
  • 其他人

-/—-/—-/—-
[文件类型/所有者权限/组权限/其他人权限]
十个栏位
rwx [读/写/执行]
三个权限

修改文件权限

修改文件权限 chmod
u 文件属主权限 g 同组用户权限 o 其它用户权限 a 所有用户(包括以上三种)
—————
r = 4 w = 2 x = 1
修改文件

  1. chmod u+r file.txt

修改所有者

修改文件所有者

  1. chown [-r] [name] [file/dir]

网络操作

ifconfig 检测网络接口配置

如果没有命令,则使用

  1. apt install net-tools

进行安装

查看网络状况

ifconfig

开启和关闭网卡

ifconfig eth0 up
ifconfig eth0 down

配置IPv6地址

ifconfig eth0 add 33ffe:3240:800:1005::2/64
ifconfig eth0 del 33ffe:3240:800:1005::2/64

ping 检测网络连通性

如果没有ping命令,可以执行apt install iputils-ping安装

-c 发送2条之后停止进行检测

ping -c 2 59.110.247.22

指定间隔秒数

ping -i 1 59.110.247.22

host/dig/nslookup 检测DNS解析

是常用的域名查询工具,可以用来测试域名系统工作是否正常。

  1. apt install dnsutils

查看baidu的DNS配置

dig baidu.com
host baidu.com

nslookup允许交互式查询

nslookup

wget 下载文件

wget https://img.kaikeba.com/518112501202cubo.jpg?imageView2/2/w/375/format/webp

-r 递归下载

-l 递归的最大深度

-c 断点续传

-p 下载html中相关的图片等元素

wget -c -r —level=1 -p -np http://docs.Python.org/2/tutorial/index.html

下载重命名

wget -O png.png https://img.kaikeba.com/518112501202cubo.jpg?imageView2/2/w/375/format/webp

重试40次

wget —tries=40 http://192.168.1.10/abc.zip

ssh 远程链接

ssh [参数][主机]
常用参数
-p 端口
-i 身份验证文件
-l 登录名
scp 远程传递文件
scp [选项] 源文件 目标文件
常用选项
-F 指定ssh配置文件
-r 以递归方式复制

  1. #从 10.10.10.10 机器上的/opt/soft/的目录中下载 nginx-0.5.38.tar.gz 文件到本地/opt/soft/目录中。
  2. scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
  3. #上传本地文件到远程机器指定目录
  4. scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest

进程管理

进程的概念

在linux中,每个可执行的程序都是一个进程,每个进程都有一个id号
每个进程都有两种存在形式-前台和后台

管理进程相关的操作

ps [选项]

-a 显示当前终端的所有进程信息
-u 用户格式显示进程信息
-x 显示后台进程运行的参数
-e 显示所有进程
-f 全格式

常见返回信息

PID 进程识别号
TTY 终端机号
TIME 此进程消耗的CPU时间
CMD 正在执行的命令或者进程名
CPU 此进程占用的CPU使用率
RSS 使用的内存情况
STAT 进程的状态 s 休眠 r 运行中 D阻塞 Z僵死 T结束

kill 终止进程

kill [选项] 进程号 kill [选项] 进程名称
常用选项

  1. HUP 1 终端挂断
  2. INT 2 中断(同 Ctrl + C
  3. QUIT 3 退出(同 Ctrl + \\
  4. KILL 9 强制终止
  5. TERM 15 终止
  6. CONT 18 继续(与STOP相反,fg/bg命令)
  7. STOP 19 暂停(同 Ctrl + Z

top 动态监控进程状态

top[选项]
常用选项
-d 更新间隔s -i 使top不显示闲置和僵死进程 -P 通过指定id来监控指定进程
P按cpu使用率进行排序 M 内存排序 N pid排序 q退出
输入top后再输入u,可以查看特定用户的进程 输入k可以关闭进
程 top -d 10

  1. 输入top后再输入u,可以查看特定用户的进程
  2. 输入k可以关闭进程
  3. top -d 10

定时任务

Linux下的定时任务时间格式

        • *
          分别对应
          分钟 小时 每月的第多少天 第几月 每星期的第几天
          如下图所示:
          image.png
          在线编辑定时时间网站: https://www.toolhut.cn/
          Linux本身只支持到分钟级别的定时任务

          crontab

          管理定时任务的命令

          命令格式

          crontab [-u user] file
          crontab [-u user] [-e|-l|-r]
          -u 用来设定某个用户的crontab服务
          file 是命令文件的名字
          -e 编辑某个用户的crontab文件内容
          -l 显示某个用户的crontab文件内容
          -r 从/var/spool/cron目录中删除某个用户的crontab文件
          -i 在删除用户的crontab文件时给确认提示

          操作

          首先设置编辑crontab文件使用的编辑器
          EDITOR=vi; export EDITOR
          设定好编辑器之后,执行
          crontab -e
          打开定时任务文件进行编辑
          定时任务文件就放在
          /var/spool/cron/crontabs
          image.png
          如上图,输入:
          1. 0,15,30,45 18-06 * * * /bin/echo 'date' > /var/text.txt
          这段配置的意思是每隔十五分钟向text.txt输出一次当前时间
          然后执行
          1. service cron [start/stop/restart]
          进行定时任务的开启与停止

          删除定时任务

          crontab -r

          练习

  1. 下载mysql服务运行起来然后查看服务进程,尝试杀死服务进行且重启,然后对服务进行定时备份,查看备份文件的权限。
  2. 了解一下ssh命令和scp命令。