一、操作系统概述
1、分类
商业用户: Unix--AIX (IBM) , Solaris(SUN/ORACLE) Linux--centos、Ubuntu、coreOS、suce 国产--飞腾、中标麒麟、银河麒麟
个人:windows、mac、安卓
2、为什么使用Linux
(1) 节省资源 (2) 开源免费 (3)生态完善 (4) 良好稳定
常用操作系统有适用于大型机、小型机、刀片服务器、桌面服务器、移动设备等
3、文件系统结构
linux是一个倒树型结构 “/”(根目录)
/bin ##二进制可执行文件,常规命令
/boot ##启动目录,存放系统自动启动文件,内核,初始化程序
/dev ##系统设备管理文件
/etc ##大多数系统配置文件存放路径
/home ##普通用户家目录
/lib ##函数库(系统内部定义的类似变量的库,.so文件)
/lib64/ ##64位函数库
/media /mnt ##临时挂载点
/run ##自动临时设备挂载点
/opt ##第三方软件安装路径
/proc ##系统硬件信息和系统进程信息
/root ##超级用户家目录
/sbin ##系统管理命令,通常只有root可以执行
/srv ##系统数据目录
/var ##系统数据目录
/sys ##内核相关数据
/tmp ##临时文件产生目录
/usr/ ##用户相关信息数据
4. 系统结构
二、Linux常用命令
1、用户管理
- 创建用户
useradd -md /home/testuser -s /bin/bash username
-m 创建目录
-d 指定HOME目录
-s 指定shell
- 查看账户过期
chage -l root
用户默认设置文件/etc/login.defs
修改密码
passwd username echo password1|passwd --stdin username
- 用户间切换
su - username 切换后转到用户home目录
- 删除用户
userdel 例如userdel username/userdel -r username(删除用户目录)
- 用户组管理
groupadd、groupmod、groupdel
- 权限管理
chgrp 修改宿主 chown修改用户
例:chwon username filename chown -R username dictionary
- 权限位
u 用户,g 组 , o 其它
r读 w写 x执行,对应二进制码 421
命令:chmod 777 filename chmod u+rw filename
给用户增加读写权限 chmod g-xw filename 给组删除执行和写权限
2、网络管理
ifconfig 查看本机网络配置
ip a 查看本机网络配置
netstat 查看本机端口
常用命令:netstat -ant netstat -anp|grep 8001
nmtui 图形化网络配置
配置文件: /etc/sysconfig/network-scripts 扩展: lsof、nc “网络军刀”
3、文件系统管理
- 查看磁盘空间
df 常用命令:
df -h 自适应单位显示
df -k 以KB为单位显示
df -T 显示磁盘类型
其它命令: fdisk -l /dev/sda1 查看磁盘信息
mount /unmount 挂载磁盘
mkfs.ext4 格式化
- LVM 是 Logical Volume Manager(逻辑卷管理)
LVM是在硬盘分区之上建立一个逻辑层,这个逻辑层让多个硬盘或分区看起来像一块逻辑硬盘,然后将这块逻辑硬盘分成逻辑卷之后使用,从而大大提高了分区的灵活性
- 查看进程 ps
常用命令:ps -ef|grep keyword
- 系统资源监控: top,sar, vmstat
常用命令:sar 1 每秒采样、sar -n DEV 1 每秒采样显示网络流量
- 磁盘: iostat
常用命令: iostat -xm 2 2秒采样,以MB单位显示
- 内存查看 free
常用命令: free -g
- 结束进程 kill ,pkill , killall
常用命令: kill -9 pid , kill pid , kill -l 显示信号量
- 后台执行命令 "命令 &",
把命令放入后台执行(必须正常退出)
常用方式 nohup 命令 &。
- 后台与前台执行命令切换
jobs 查看后台运行任务
fg id 将后台运行id对应进程,转到前台运行
bg id 将后台暂停进程,切换到后台运行
4. 系统服务管理
- 包管理:
yum 、rpm yum search <package> 搜索
yum install <package> yum history list 查看安装历史,
yum history info <id> 详情
yum remove <package> rpm ivh <package> 安装
rpm -qf filename 查询文件属于哪个包
rpm -ql <package> 列出包中文件
- 服务管理
centos 6
service <software> status
centos7
systemctl
常用方式:
systemctl -a 列出所有服务
systemctl restart docker 重启服务名为docker的服务
三、shell使用
1. 为什么学习使用SHELL
技术需求
(1)、基本技能 2、可以快速、简单地完成编程 3、SHELL是Linux系统通用语言
自动化
(2)、为了提高工作效率 2、提高工作效率是为了提高产出 3、提高产出是为了提高成就感和收入
2、SHELL 介绍
shell是一种命令语言,同时又是一种程序设计语言,在用户登录后系统启动。它解释并运行由命令行或脚本文件输入的命令,从而实现用户和内核间的交互
- 交互式Shell:
当用户登录成功,系统会启动一个交互式的shell来提示用户输入指令。用户键入命令后,shell开始对命令作出解释,然后发送给kernel执行。
- Shell程序(脚本):
相当于dos的批处理文件,可简单到只有一条命令,也可以包括循环、条件语句、数学运算、控制结构的程序,完成复杂的任务。
3、SHELL分类
- 根据不同的语言风格,常用的shell分成两种:
(1). 基于C语言风格的C shell (2). 基于Algol语言的Bourne shell、K shell、Bash shell。
- Bash shell在linux系统上用得比较多,使用命令 echo $SHELL可以看出你当前用的是哪种类型Shell
- /etc/passwd这个文件最后一个列指定用户登录时使用哪种类型的shell: ngktuser:x:11946:600::/data/ngktuser:/bin/csh
4. 常用shell比较
特性 | C/TC | Boune | Bash | K |
脚本第一行 | #!/bin/csh 或 #!/bin/tcsh | #!/bin/sh | #!/bin/bash | #!/bin/ksh |
局部变量 | set x = 5 (等号两边可以有空格) | x=5 (等号两边不能有空格) | x=5 (等号两边不能有空格) | x=5 (等号两边不能有空格) |
设置环境变量 | setenv PATH ${PATH}:/home/aicdr | PATH=${PATH}:/data/tofile export PATH | PATH=${PATH}:/data/tofile export PATH | PATH=${PATH}:/data/tofile export PATH |
执行计算 | @ var=5 + 1 (@后面有空格,+左右有空格) | var=`expr 5 + 1` (+左右有空格) | var=`expr 5 + 1` ((var= 5 + 1)) let var=5+1 | var=`expr 5 + 1` ((var= 5 + 1)) let var=5+1 |
初始化文件和环境文件 | /etc/csh.cshrc 或者/etc/csh.login $HOME/.login --------- $HOME/.cshrc或者.tcshrc | /etc/profile$HOME/.profile ------------ | /etc/profile $HOME/.bash_profile ----------- $HOME/.bashrc | /etc/profile $HOME/.profile -------- $HOME/.kshrc |
加载过程:
5、AWK工具简介
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
示例: intf%cat names.txt Tom Savage 100 Molly Lee 200 John Doe 300 intf%awk '{print $1,$3}' names.txt Tom 100 Molly 200 John 300
- 只是显示/etc/passwd的账户
cat /etc/passwd |awk -F':' '{print $1}' Root
- 只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,
在最后一行添加"blue,/bin/nosh“
cat /etc/passwd |awk -F':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}' name,shell root,/bin/ksh blue,/bin/nosh
- 统计某个文件夹下的文件占用的字节数,过滤4096大小的文件(一般都是文件夹):
ls -l |awk 'BEGIN {size=0;print "[start]size is ", size} {if($5!=4096){size=size+$5;}} END{print "[end]size is ", size/1024/1024,"M"}' [start]size is 0 [end]size is 11.4394 M
6、sed工具简介
- sed是一种非交互式的编辑器。只能在命令行输入编辑命令,指定文件名,然后在屏幕上查看输出。默认情况下,所有的输出航都被打印到屏幕上。
- sed必须通过行号或者正则表达式指定要改变的文本行。
- sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后读命令行或脚本的第一条命令,并使用这些命令查找模式或定位行号编辑它。重复此过程直到命令结束。