1.基础概念
1.定义
Linux是一个免费、开源、基于Posix和Unix的多用户、多任务、支持多线程和多CPU的操作系统。通常C/C++/PHP/PYTHON/JAVA/GO都会部署在linux上。
文件名:字母、数字、下划线、圆点等组成。
Shell就是系统的用户界面,提供了用户与内核进行交互操作的一种接口,Windows XP中的Shell为命令行提示符CMD和窗口管理器Explorer。
2.特点
免费:免费试用
开源:任何人使用软件的同时都可以查看软件的源代码,或者根据自己的需要去修改它。
3.专业术语
Posix:可移植操作系统接口,标准定义了操作系统应该为应用程序提供的接口标准
UNIX :早期的操作系统,后来的 Windows和Linux 都参考了UNIX
多用户多任务:多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务。
线程:线程是CPU调度和分配的基本单位。
Linux 默认的文件系统类型:EXT3、EXT4,SWAP类型的文件系统只在linux交换分区时被使用。
端口号:在Linux系统中一个端口只能被一个应用程序所占用
4.centos
linux的主流版本有:Ubuntu,Red hat,Centos 唯一的区别是Red hat收费CentOS不收费
服务器首选是CentOs,Ubuntu桌面靓丽,但是对于服务器操作系统,一般都是远程操作,所以Ubuntu的桌面优点在做云端服务器上就无法显现了,因为一般都是命令行远程操作。
特点:
1.稳定:CentOS 的更新频率较低,版本较为稳定,Ubuntu经常更新
2.安全:CentOS 充分利用 SELinux 框架用于加强的安全层,而目前在 Ubuntu 中则不可用或者说是不容易使用,所以说服务器的首选还得是CentOS。
5.目录结构
/bin 存放常用的命令
/sbin 存放系统管理员的系统管理程序
/home 普通用户家目录
/root 超级管理员账户目录
/lib 系统开机所需要的最基本的的动态连接共享库
/lost+found 系统非法关机存放的文件
/etc 系统管理的配置文件和子目录 my.conf
/usr 用户的应用程序和文件
/boot 存放启动linux的核心文件,包括连接文件和镜像文件
/proc 虚拟目录,获取系统信息
/srv 存放服务启动之后需要提取的数据
/sys 安装内核中新出现的系统sysfs
/tmp 存放临时文件
/dev 设备管理器
/media 自动识别设备的挂载目录
/mnt 让用户临时挂载别的文件系统的,将外部的存储挂载在/mnt/中,目录中可以查看内容,myshare
/opt 主机额外安装软件的目录,如oracle等
/usr/local 给主机额外安装软件的目录,是通过编译源码方法安装的程序
/var 存放不断扩充的东西,经常修改的目录,包括日志文件
/selinux 安全子系统,能控制程序只能访问特定文件,有三种工作模式
2.命令帮助
1.man 命令 【mannual(手册页)】
较为详细的帮助手册页,以man db的方法安装,手册页通常分为8个章节。
man ls
2.命令 --help
大多数命令支持帮助选项,获取快捷帮助信息
ls --help
3.info 命令
info ls
4.help 命令
查看系统内部命令的信息
help pwd
5.type命令
查看命令是内部命令或是外部命令
type ifconfig
6.alias命令
取别名 alias if='ifconfig' 取别名 unalias if 取消别名
3.路径操作
1.ls 文件路径
文件类型: d 文件夹 -普通文件 l 链接文件 b 块设备文件 c 字符设备文件 p 管道文件
s 套接字文件(用于进程之间的通信--实现远程api)
-a(显示指定目录下所有子目录和文件,包括隐藏文件)-----------以“."开头的文件为隐藏文件
-l 以列表的方式显示文件的详细信息
-h 可读性增强显示信息
-d 列出当前目录的自身信息
三位一组的 r(读) w(写) x可执行
第一组 创建这个文件用户所有的权限(文件所有者)
第二组 创建这个文件夹用户所在组的权限(同组用户)
第三组 其它用户组对这个文件的权限(其它用户)
2.cd 文件路径
cd 切换到当前用户的主目录(home/用户目录)
cd ~ 切换到当前用户的主目录(home/用户目录)
cd / 进入根目录
cd .. 切换到上级目录
cd . 切换到当前目录
cd - 返回上一步位置
3.pwd
显示当前的路径
4.mkdir 目录名
-p mkdir /home/dir1/dir2 递归创建目录
{ } mkdir /home/{dir1,dir2} 创建多个目录
5.touch 文件名
创建文件
4.文件显示及过滤
1.cat 文件名
查看文件内容,可与管道符进行结合
-t 显示控制字符Tab键盘
1:搜索文件中含有ip的行
cat 文件名|grep “ip”
2:查看关键字后十行
cat 文件名|grep “关键字” -A 10
3:查看关键字前十行
cat 文件名|grep “关键字” -B 10
4:查看关键字前后10行日志,并显示出行号
cat 文件名|grep “关键字” -C 10
2.head 文件名
查看文件的前多少行,默认为10
-n head -n 5+文件名
3.tail 文件名
查看文件的后多少行,默认为10
-n tail -n 5+文件名
-f tail - f 文件名(实时查看文件内容)
4.more 文件名
针对内容非常多的文件,支持翻页查看
b键向上翻页
enter键向下翻页
5.less 文件名
针对内容多的文件,支持翻页查看
space键下翻
b键上翻
ctrl+z退出
5.文件目录删除
1.rmdir 目录名
删除空目录
- p 递归删除空目录
2.rm 文件/目录
删除文件前确认
rm -r 删除目录
rm -rf 强制删除文件/目录
rm -rf * 删除当前目录下所有
6.文件拷贝/移动操作
1.cp 原文件名 新文件名/文件路径
-a 全部文件目录拷贝
-f 强制拷贝
-i 拷贝显示提示信息
-v 显示命令执行的详细信息
-r 复制目录
2.mv 原文件路径 新文件路径
重命名:mv 原文件/目录名称 新文件/目录名称
7.文件压缩和归档
1.tar
-c create
-f file
-z gz压缩
tar -cvf +xxx.tar 文件名 打包一个tar包
tar-xvf +xxx.tar 解包一个tar包
tar -zxvf aaa.tar.gz 解压并解包
tar -zcvf xxx.tar.gz xxx文件 打包并压缩
2.zip
zip xxx.zip 文件名/文件夹名 压缩文件/目录
zip-r xxx.zip 递归压缩目录
unzip xxx.zip 解压文件
3.7z
安装包名:
1.p7zip-full
2.p7zip-rar 用于提供解压rar文件
特色:可以解压rar文件
a 压缩 7z a xx.7z 文件名 文件名
d 删除包里的文件 7z d xx.7z 文件名
e 解压到当前文件夹 7z e xx.7z
l 展示压缩包里的内容 7z l xx.7z
4.ar库归档
程序的目标代码文件后缀:.o
静态库文件后缀: .a
作用:归档程序的目标代码文件*.o 到静态库文件 *.a
r 添加目标代码文件到静态库中 ar rv xxx.a xxx.o
x 提取目标文件从静态库中 ar xv xxx.a xxx.o
t 查看静态库文件中目标代码列表
v 显示详细信息
d 从静态库中删除目标代码 ar dv xxx.a xxx.o
8.文本操作
1.gedit 文件名
图形文件编辑器
2.vim 文件名
h 左移
j 下移
k 上移
l 右移
0 返回行首
$ 返回行尾
gg 返回页首
G 返回页尾
yy 复制行
nyy 复制光标后n行
p 粘贴
dd 删除行
ndd 删除光标后n行
u 撤销
x 删除某个字
:set nu 设置行号
:set list 显示控制字符
:set nonu 取消设置行号
/搜索 按n往下翻 N向上
替换 :1,5 s/22/66/g 1,5 范围 s交换 g全局
另存为 :w /路径
可视化模式 v
y 复制 p粘贴 d删除
3.echo
显示文字
echo 文字
echo 文字 > 文件名 向文件中重定向输入文件
9.文件挂载与卸载
文件设备一般自动挂载在 /media 中,手动一般挂载在 /mnt中。
/dev 文件中,存放的是光盘或者u盘的映射
1.mount
光盘手动挂载
mount -t iso9660 /dev/cdrom/mnt
光盘iso镜像文件挂载
mount -o loop -t iso9660 mycd.iso /media
FAT32文件系统u盘手动挂载
mount -t vfat /dev/sdb1/mnt
NTFS文件系统U盘挂载
mount.ntfs /dev/sdb1/mnt
2.fdisk
查看硬盘大小 fdisk -l
3.umount
-a 卸载非启动挂载挂载项
umount /mnt 卸载目录
umount /dev/sdb1 卸载设备
10.软件包升级安装
1.apt-get
(软件包存储在/var/cache/apt/archives中)
apt-get download 在线下载
apt-get install 在线安装
apt-get update 更新软件列表
apt-get upgrade xx 升级软件包
2.dpkg
离线安装
dpkg -i xxx.deb 离线安装
dpkg -r xxx 离线包卸载
3.yum
yum install 在线安装
yum install gcc
yun install gcc-c++
-y 全部yes的状况运行
4.rpm
rpm -ivh xxx.rpm 离线安装
5.wget
从网上拉取文件的工具,支持http和ftp协议,支持代理服务器功能
wget url
wget -qo- XXX| sh -q 安静模式
使用wget拉取shell脚本运行
11.系统进程/内存操作
id+pid 查看此pid的用户和组
1.top 动态查看进程
top -d 秒数 间隔几秒查看cpu
-p 查看具体进程
top解读
第一行:程序名:系统时间:运行时间:登录用户数:CPU负载:负载时间
第二行:总进程数:运行数:休眠数:停止数:未响应数
第三行:CPU占比:us用户:sy系统:ni优先级:id空闲:wa等待:hi硬件:si软件:st虚拟机
第四行:物理内存:free空闲内存:used已使用:cache缓存硬盘内存:
进程优先级ni nice
优先级越大,优先级越小,取值范围-20~+19
ps:系统会自动增加20
nice -n 5 命令 nice -n 5 sleep 200
renice -20 pid 调整具体pid的优先级
程序放置后台 命令 +&
查看后台 jobs
后台运行 bg+进程号
程序调回前台 fg+进程号
2.ps 静态查看进程
ps aux 查看所有用户的进程
ps -ef 查看用户的进程
--sort%cpu 按照cpu排序
ps aux|grep 程序名 查看服务进程是否开启
T-stop 停止状态
Z-zombie 未响应状态
S-sleeping 休眠状态
R-running 运行状态
3.free 查看内存
free -m 查看内存,以M显示
free -s 动态显示内存
4.kill 杀进程
kill -l 查看系统支持的信号 进程名
kill -9 发送中止进程的信号
kill -9 $$ 中止该进程的新号
kill -19 暂停该进程的信号
killall 缺省发送term信号给指定进程名的进程
killall -9 中止该进程的新号 进程名
默认终止进程
5.pstree
显示当前所有进程的进程树信息
-p 显示进程号
12.计划任务
1.watch
每间隔执行命令
watch -n 秒数 '需要执行的命令'
2.cron服务(循环调度)
crontab -e 编辑计划任务
语法: */2 7-9 * * * 命令
代表分时日月周,每隔2分钟执行,会发送至当前用户邮箱
-l 表示查询计划任务
-r 删除计划任务
ps aux|grep crond 查看进程状态
3.at(一次性调度)
语法:at now +2min
ctrl+d 结束
atq 查看定时任务
13.权限操作
1.chmod 修改文件/文件夹权限
属主:u
属组:g
其他人:o
所有人:a
4可读 r
2可写 w
1可执行 x
chmod u=rwx 目录/文件名
chmod a=rwx file 授予权限 chmod a=rx file
chmod o= file 不赋予权限
chmod u-r file u去掉r的权限
2.chown 修改文件属组/属主
chown +属主+文件名称
-R参数 递归修改目录下所有的子目录
chown root:root aa.txt 同时修改文件aa.txt的属主和属组为root
chown .root aa.txt 更改属组为root
3.chgrp 修改文件属组
chgrp+拥有者 +文件名称
4.ACL限制文件操作
getfacl 文件名 查看用户ACL权限
setfacl -m 属主/数组/其他人:用户名:权限 文件路径
setfacl -m u:admin:rwx /home 设置文件访控
用户名缺省表示所有用户
-x 删除ACL权限 setfacl -x 属主/数组/其他人:用户名 文件
-b 删除全部ACL权限
ps:文件详细信息显示+号,表示有附加的ACL权限
5.umask 权限掩码
umask 默认0022 限制创建文件的初始权限
-S 显示用户的权限
6.用户组成员更改
1.gpasswd 成员名 组名
基本组: 随用户而创建,组名同用户名
附加组:可以有多个,用户加入非基本组
-a 将新增用户加入到组群(附加组)
-d 将用户从组群删除
2.newgrp 组名
切换群组进行登录
14.用户/组添加与删除/用户权限
useradd 用户名 添加用户
useradd -m 用户名 创建用户并建家目录
useradd +用户 -g +组名 添加用户指定基本组
useradd +用户名 -d (指定目录) -u (指定uid) 添加用户并赋予uid
userdel -r+用户名 删除用户所有包括配置
cat /etc/passwd 可以查看所有用户的列表
cat /etc/shadow 用户密码文件
cat /etc/group 群组信息
添加用户密码 passwd -d+用户名称 组名
删除用户组 groupdel+用户组
groups+用户名 查看当前登录用户所在组
1.passwd文件解读
用户名:密码占位符:uid:gid:描述:用户的家目录:命令解释器
uid:
0 特权用户
1-499 系统用户
1000+ 普通用户
2.group文件解读
组名:组密码:组gid:组成员
3.shadow文件解读
登录名:密码:最后一次修改的时间:最小修改密码时间间隔:密码有效的最大天数:密码失效警告时间:用户不活动时间:失效时间:保留
4.usermod
usermod -s 修改用户属性
usermod -s /sbin/nologin user01 修改用户shell属性
usermod -g 组名 用户名 更改用户基本组
usermod -G 组名 用户名 添加用户附加组
usermod -L 用户名 用户账号锁定
usermod -U 用户名 用户账号解锁
5.特殊权限
特殊位suid:针对文件/程序时,具备临时提升权限
当用户调配文件时,如果有suid,s占位时,有临时属主的能力
s权限: chmod u+s /usr/bin/cat (临时提权)
i权限:chattr +i 文件名 不能更改,重命名或删除
a权限:chattr+a 文件名 只能追加 (针对日志文件)
15.用户查看/切换
1.id 查看组
id+pid 查看此pid的用户和组
id -u 用户名 显示当前的有效用户pid
2.whoami
查看当前用户命令
3.who
查看所有登录用户命令
4.su
su 用户名 切换用户
$ 普通用户
# 超级用户
5.sudo
1.使用普通登录服务器时临时提权
2.完成部分特权指令
3.分配权限语法
sudo -u 用户名 命令 临时使用某用户的权力
sudo -i 切换超级管理员
ps:不在sudoer文件里,将用户添加到udoer组里
16.重定向
1.>输出重定向
将本目录状态信息覆盖到目标文件
2.>>追加
3.
4.FD文件描述符
文件句柄进程使用文件描述符来管理打开的文件。
键盘输入在dev文件中,再通过0fd进入程序。
FD是访问文件的标识,即链接文件,省去长的绝对路径
通过设备键盘输入,向程序发送信号
0 键盘只读
1,2 是终端理解为屏幕
3+ 是文件,可读可写
1 > 表示控制程序的FD。标准输出
2 > 引导错误输出的
&> 无论正确还是错误都引导
date 1> /dev/pts/0
date 1> /dev/pts/1
/dev/pts/0 终端设备 echo aaa 1>/dev/pts/0 发送信号
17.软硬链接
1.软链接 ln -s
作用:快捷方式 软链接只指向文件名
ln -s +文件名 +链接名 只能在当前目录里创建
ln -s +文件名的绝对路径 +绝对路径的链接名(把软链接放到哪里) 在其他目录创建
软连接的大小为路径的大小
2.硬链接 ln -d
ln -d aa.txt ee.txt 帮文件创建一个硬链接相当于就是备份-------目录不能创建硬链接
18.磁盘分区
1.df
显示磁盘文件系统空间
-h 人性化显示
2.du 文件
文件空间占用的详细报告(字节)
-s 概括描述文件空间的占用情况
-h 人性化显示
19.端口服务
lsof 查看端口号
-i:端口号 查看占用端口的服务,以及进程号
20.系统操作
1.reboot
重启
2.shutdown
关机
3.init 0
关机
4.clear
清屏
5.reboot
重启
6.halt
关机
7.系统信息与主机查看
cat /proc/meminfo 系统内存硬件信息
cat /proc/cpuinfo 系统cpu硬件信息
uname -a 操作系统信息
hostname 主机名查看
21.查看文件操作
1.find
1.通过文件/目录名称查找文件(只能查看一个文件)
find 路径 -name 文件名/目录名
2.按文件大小 -size +5M (-5M)
3.按用户深度 -maxdepth 2 -a(and) -name xxx.txt
4.按属主,属组找 -user/-group 用户名/组名
5.按文件类型查找 -type
6.按权限 -perm 777
-i 不区分大小写
-delete 删除
-print 打印显示
-ok cp -rvf {} 目标文件 \; 复制文件,{}代表找到的内容
-ls 显示详细信息
2.grep
grep命令是一种强大文本搜索工具,可以使用正则表达式搜索文本,并把匹配的行打印出来.
grep 关键字 文件名 从文件中查找字符串
-r 递归查找 grep -r 关键字 目录名
-i 忽略大小写
-v 反向筛选
3.which
which +命令 主要用于命令的查找
4.locate
locate 文件名 主要基于数据库查找
22.网络管理
1.ping
测试网络连通情况
ping ip地址/网址
-c 发送ICMP_REQUEST包的数量
2.ifconfig 网络地址查看及设置
查看网络接口信息
ifconfig
-a eth0 详细查看网络接口的地址信息
ifconfig eth0 ip地址 netmask 子网掩码
3.nslookup 域名解析
查看域名解析后的映射ip地址
nslookup 域名
nslookup ip地址 反向解析
4.route 路由信息查看
查看路由设置信息
route 缺省查看静态路由信息
-n 显示缓存于主机的路由信息
5.netstat
网络统计信息查看
-a 显示监听信息的网络统计信息
-t 显示tcp协议相关的网络统计信息
22.远程传输
1.scp(桥接模式)
用于在Linux下进行远程拷贝文件的命令,scp还非常不占资源,不会提高多少系统负荷,不影响系统的正常使用。
-P:指定远程主机的端口号; -p:保留文件的最后修改时间,最后访问时间和权限模式; -r:以递归方式复制 从远处复制文件到本地目录: scp root@192.168.127.128:/home/admin/aa.txt /myhome 复制192.168.127.128用户的aa.txt文件 scp -r 表示复制文件夹 上传本地文件到远程机器指定目录 scp /myhome/aa.txt root@192.168.127.128:/home/admin
2.rzsz 命令
把Windows系统中的文件上传到Linux服务器
sz命令 + 文件名:把Linux服务器的文件下载到Windows本地
注:rz和sz命令只用来上传拉取0-500MB之内的文件
lrzsz缺点:不能传大文件,传输速度慢,失败率高
3.ftp协议
包: vsftpd vsftp*.deb
采用c/s架构服务,用于文件上传与下载
传输模式:1.二进制(不发生文本转换) bi
2.文本格式(可能有损失) ascii
ftp ip地址
mget 下载文件
mput 上传文件
bye 退出
bi 二进制文件
ascii 文本文件
ps:普通命令表示服务端
!+普通命令 表示客户端
ftp配置文件 /etc/vsftpd.conf
重启服务 service vsftpd restart
停止服务 service vsftpd stop
启动服务 service vsftpd start
重新读取 service vsftpd reload
查看状态 service vsftpd status
4.ssh服务
远程系统操作
包: openssh-server ,ssh
ssh ip地址
启动服务 service ssh start
停止服务 service ssh stop
重启服务 service ssh restart
配置文件 /etc/ssh/sshd.conf
5.telnet
查看远程服务器端口是否启用
telnet ip地址(域名) 端口号
23.管道符操作
1.tee管道
# cat anaconda-ks.cfg |tee bbb.txt |tail -n 1 存取紧靠前面指令的内容
2.Xargs 指令
连接特殊命令的指令
cat file1 |xargs rm -rf
3.cut命令
cat /etc/passwd |grep user01 |cut -d: -f1 -d 切割,后面跟切割符 -f 后跟切割输出的片段
24.日志文件
1.常见的日志文件
1.message 系统主日志文件
2.secure 认证、安全
3.yum.log 安装日志
4.maillog 和邮件posfix相关
5.cron cron、at产生的日志
6.dmesg 和系统启动相关
2.日志配置文件
/etc/rsyslog.conf
配置文件中存在注释说明和开关。rules输出文件产生的什么日志放在什么地方。
3.日志级别
emerge 致命,紧急
alert 报警
crit 致命
err 错误
warning 警告
notice 普通
info 标准信息
debug 调试信息