Linux笔记
Linux笔记
JJuprising第一课
什么是LInux?
- Linux是一种操作系统
- 1991年10月,Linux Torvalds发布第一个公开版内核
Linux目录结构
/ linux 文件系统的起点,linux 所有的文件都放在其中。
/bin 存放二进制可执行文件,常用命令一般都在这里
/etc 存放系统管理和配置文件
/home 存放所有普通用户的家目录
/usr 存放系统应用程序
/opt 额外安装的可选应用程序包所放置的位置。比如,我们可以把 tomcat 等都 安装到这里
/proc 虚拟文件系统目录,是系统内存的映射,相当于是存储内存中的信息
/root 管理员的家目录
/sbin 存放二进制可执行文件,只有 root 才能访问。这里存放的是系统管理员使用 的系统级别的管理命令和程序。如 ifconfig 等
/dev 用于存放硬盘、键盘、鼠标、光驱等各种设备文件
/mnt 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂 载其他的文件系统
/boot 存放用于系统引导时使用的各种文件
/lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
/tmp 用于存放各种临时文件
/var 用于存放各种服务的日志文件、系统启动日志等
第二课
查看及切换目录
“三剑客”高级使用
pwd — Print Working Directory – 用途:查看当前工作目录
cd — Change Directory
- 用途:切换工作目录
- 格式:cd [目标文件夹位置]
绝对路径与相对路径
绝对路径:以根目录(/)起始的路径
相对路径:以当前路径为参照的路径
1 | [root@zrj pki]# cd /etc/pki/CA/ #绝对路径(以根为起始) |
- . 表示当前目录
- .. 表示父目录(也就是上一级目录)
1 | [root@zrj CA]# cd .. #返回上一级目录 |
ls列出目录内容/文件属性
ls列出目录内容/文件属性
– -l:以长格式显示(显示详细属性)
– -A:包括名称以 . 开头的隐藏文档
– -d:显示目录本身(而不是内容)的属性
– -h:提供易读的容量单位(K、M)等
– -R:递归显示内容
1 | ls -lh /etc/passwd #显示详细属性并加上易读单位(K) 不加-h就是默认以字节为单位,理解为human给人看的 |
查详细属性
1 | ls -lhd 目录或文件 |
创建/删除/移动目录
别名
1 | alias #查看别名列表 |
创建
- mkdir–Make Directory
删除
- rm–Remove
- -r:递归删除
- -f:强制删除
移动
- mv–Move
1 | mv /opt/susu /opt/yiyi #改名 换个地方换个名 cp也可以 |
复制与通配符
cp复制
- cp–Copy
- -r:递归复制整个目录
- -f:强制覆盖,不提示
- -p:保持源文件属性不变
强制覆盖
临时取消别名:在运行命令前,加上 \
1 | cp -r /boot/ /opt/ #递归复制每复制一个就询问一遍,输入y,文件太多时怎么处理呢? |
复制多个
永远把最后一个参数作为目标,其他的所有参数都作为源
1 | cp -r /boot/ /home/ /etc/passwd /mnt/ #将/boot/ /home/复制到/mnt目录下 |
通配符
- *任意多个字符
- ?单个字符
- ‘*tab’以tab结尾 ‘tab*‘以tab开头
1 | ls /boot/vm* #显示以vm开头数据 |
- 特殊字符
- [a-z]:多个字符或连续范围中的一个,若无则忽略
- {a,min,xy}:多组不同的字符串,全匹配
1 | [redhat@localhost ~]$ touch tty3 |
重定向与管道操作
- >:覆盖重定向
- >>:追加重定向
将屏幕显示信息写入文件
命令 > file 覆盖
命令>> file 追加
1 | [redhat@localhost ~]$ touch redhat.txt #创建一个文件 |
- cat 加-n 添加行标
管道
|:只接受一个输入的命令
1 | #一个文件12行 显示8-12行内容: |
find精确查找文件
– 常用条件表示:
-type 类型(f 文件【黑】、d 目录【蓝】、l 快捷方式【青】)
-name “文档名称”
-size +|-文件大小(k、M、G) k小写
-user 用户名 -mtime 修改时间
1 | #-type 按照类型查找 |
find高级使用
wc
wc: word count 统计
wc -l /etc/passwd
查看这个文件有多少行 也是查看操作系统有多少用户
1 | find /etc/ -name '*tab' | wc -l #管道给wc表示统计以tab结尾的文件有多少个 |
第三节课
- mkdir 只能创建文件夹不管后缀是怎么样,make directory
创建文件
1 | touch [文件名] |
创建硬连接
ln
1 | ln [选项] 原文件 /路径/快捷方式名字 |
颜色是青绿色
删除目录下所有内容
删除 /root/opt 下的所有内容,利用通配符 *
1 | rm -rf /root/opt/* |
grep 查找文本内容
语法格式:
1 | grep [选项] '匹配模式' 文本文件... |
压缩文件
• tar 集成备份工具
红色 用tar就得加f选项,f一定放在最后
-c:创建归档
-x:释放归档
-f:指定归档文件名称
-z、-j、-J:调用 .gz、.bz2、.xz 格式的工具进行处理
-t:显示归档中的文件清单
-C(大写):指定释放的位置 ,后面要接释放目标
f:选项必须放在所有选项的最后
1 | tar -zcf /路径/压缩包名字 被压缩归档的源数据 #用gzip压缩,可以压多个 |
例子:
1 | [root@localhost ~]# tar -zcf /opt/abc.tar.gz /home/ |
查看:
1 | tar -tf /opt/bin.tar.bz2 |
解压缩
1 | #把压缩的c改成x 不加-z-j-J也可以 直接-xf |
win于linux互传
scp方法
win
1 | 本地文件->远程文件夹 |
1 | scp get66.pcap root@192.168.1.147:/super |
linux
1 | scp /home/zhao/data/test.txt zw@10.150.69.247: /C:/Users/zw/Desktop/summary |
ssh connection deny 可能是因为没有装Oepnssh通过ssh协议实现Windows与Linux之间的文件互传_ssh传输文件 windows到linux_奇迹虎虎的博客-CSDN博客
第四次课
grep的查找条件
语法格式:
1 | grep [选项] '匹配模式' 文本文件... |
匹配模式:
- ^word:以字符串word开头的
- word$:以字符串word结尾的
- ^$:匹配空行
例子:
1 | [root@localhost ~]# grep ^root /etc/passwd # 查找/etc/passwd 包含root开头的行 |
1 | grep -E '匹配模式1|匹配模式2' 文本文件 #单引号括住 |
任意满足一个就将其过滤出来
vim文本编辑器
1 | vim [[/目录/]文件名] |
- 若目标不存在,则创建空文件并编辑
先进入的是命令模式:
- 在命令模式,i键进入输入模式,Esc键返回
- 在命令模式,:键进入末行模式,Esc键返回
基本操作:
- 保存并退出
:wq
- 放弃修改并退出
:q!
命令模式下的操作:
gg
或1G
直接到文件首行,10gg
或10G
跳转到第十行G
到文件末尾yy
复制,5yy
往下复制5行,p
粘贴dd
删除,10dd
删除10行u
撤销,U
撤销当前行的所有修改,Ctrl+u
撤销一次撤销操作/word
向后查找,?word
向前查找,按回车后按n查找下一个,N查找上一个ZZ
保存并退出vim:w /root/newfile
另存为其他文件:r /etc/filesystems
读入其他文件内容
开关设置
:set nu
显示行号:set nonu
不显示行号
与vim相关的配置文件
1 | vim ~/.vimrc #~家目录下配置 |
可视化操作
Vim 多行注释
- 首先按 esc 进入命令行模式下,按下 Ctrl + v ,进入列(也叫区块)模式;
- 在行首使用上下键选择需要注释的多行;
- 按下键盘(大写) “I” 键,进入插入模式;
- 然后输入注释符( “//“、”#” 等);
- 最后按下 “Esc” 键。
mount挂载
光驱默认在/dev/sr0,它是块设备不能直接读,要挂载才能读
1 | mount 设备路径 挂载点目录 |
例子:
1 | mount /dev/cdrom /dvd/ # 将光盘挂载到/dvd/目录 |
第五次课
RPM包
没法指定安装位置,要会找,拓展名为.rpm
源码包封装–>rpm包
查询已安装的软件包
1 | rpm -q[子选项] [软件名称] |
- -a:列出已安装的所有软件包
- -i:查看指定软件的详细信息
- -l:查看指定软件的文件安装清单
查询某个目录/文件是哪个rpm包带来的
1 | rpm -qf [文件路径] |
即使目标文件被删除也可以查询,注意后面接文件路径不是软件名。
查询未安装的软件包
1 | rpm -qpi [RPM包文件] #查看指定软件的详细信息 |
卸载
1 | rpm -e |
强制覆盖安装
1 | rpm -ivh --force [] |
–force
yum仓库简介
解决要安装各种依赖包的问题(一次性装)
yum配置解析
- 基本设置:/etc/yum.conf
- 仓库配置:**/etc/yum.repos.d/.repo* 一定以.repo结尾
- 日志文件:/var/log/yum.log
1 | vim /etc/yum.repos.d/dvd.repo #/dvd.repo根据具体改 |
配置网络、源码包的编译和安装
配置linux网络
配置主机名
在root权限下
1 | [root@localhost ~]# vim /etc/hostname #修改配置文件,永久配置主机名 |
配置IP
红帽是ens160 centos是ens33
修改网卡名
1 | [root@svr7 ~]# vim /etc/default/grub |
验证,网卡名是否发生变化
1 | [root@svr7 ~]# ifconfig #有eth0网卡 |
配置IP地址
临时配置:
1 | ifconfig ens160 192.168.147.7/24 |
永久配置
1 | [root@svr7 ~]# nmcli connection show #查看连接名 |
重新添加网卡
1 | [root@svr7 ~]# nmcli connection add type ethernet ifname eth0 con-name eth0 #添加网卡 |
配置IP
先不要照抄!
1 | 配置IP |
注意:这里有两个ip地址要根据自己的修改,在虚拟机中选择VMnet8网卡,选NAT模式,查询子网ip和分配的网关;关闭DHCP,再改,因为打开后就是系统分配了
第一个ip填子网ip但后面的.0改成.7,加上/24,代码例子子网ip是192.168.147.0于是填入192.148.147.7/24
第二个ip点击NAT设置查询网关ip填入
1 | [root@svr7 ~]# nmcli connection up eth0 #激活eth0 |
为本机指定DNS服务器
1 | [root@svr7 ~]# vim /etc/resolv.conf |
添加次要DNS
ping 本机验证
1 | [root@svr7 ~]#ping 本机ip |
本机ip在命令行窗口
1 | ipconfig /all |
以太网适配器…VMnet1下的ipv4地址,后面有(首选)
一般是网关ip的.2改为.1
SSH
克隆主机A后看克隆机B的ip地址
在A中试着用ssh连B
1 | ssh root@[ip] |
例子:
1 | ssh 命令选项 |
修改默认端口
默认是22,可以进行修改,再连得关防火墙
修改默认端口,pc207主机操作:
1 | [root@pc207 ~]# vim /etc/ssh/sshd_config |
测试:svr7主机操作,如果测试失败,出现以下问题,请关闭防火墙
1 | [root@svr7 ~]# ssh -p 8022 -X root@192.168.4.207 |
常用网络工具
1 | C:\Users\chan>tracert www.baidu.com |
1 | ping -c [数字] -w [限定响应时间] [ip] #限定包数 |
源码编译安装
RPM软件包: rpm -ivh yum -y install
源码包—-开发工具—–>可以执行的程序—–>运行安装
优势:
灵活度较高,自定义较高,可以指定安装位置
获得软件的最新版,及时修复bug
软件功能可按需选择/定制,有更多软件可供选择
源码包适用各种平台
准备编译环境,启动yum
步骤一:安装开发工具gcc与make
1 | [root@svr7 ~]# yum -y install gcc make #可能会报错 说明没挂光驱和启用yum.repos.d |
查看是否安装成功:
自定义仓库
制作仓库索引文件
1 | createrepos [仓库路径] |
发现多了repodata
这就是索引文件
1 | vim /etc/yum.repos.d/dvd.repo |
添加,其中这里设置的仓库路径是/mytools/
1 | [Mytools] |
清空,重新生成
1 | yum clean all |
安装一些小玩意
小火车
1 | yum -y install sl |
字符语
1 | yum -y install cmatrix |
oneko占用前端
1 | oneko & #在后台进行 |
这是会出现[1] 数字
1 | kill all 数字 #杀死对应进程 |
用户组
超级用户id为0,其他从1开始。
每一个用户都会分配一个组,组账号用来区分权限,不用于登录。
- 基本组
- 附加组
1 | /etc/passwd #存放账号 |
1 | cat -n /etc/passwd | less #查看账号目录 |
添加组
1 | groupadd stu |
用户初始配置文件
1 | # ls -a /etc/skel/ |
模板目录,写到这里的东西会作为模板复制到新用户的家目录下。
全局配置文件还有:/etc/bashrc, /etc/profile
- ~/.bash_profile:每次登录时执行
- ~/.bashrc:每次进入新的Bash环境时执行
- ~/.bash_logout:每次退出登录时执行
echo
输出
1 | # vim /home/[用户名]/.bashrc |
打开用户终端时执行的内容
权限与归属
解析文件/目录权限
1 | # ls -lhd .. |
修改权限
chmod [-R] [+-=][rwx] 文件 ...
-R递归修改权限
1 | # chmod u+r / |
j.png)
权限管理
目录权限默认为755,文件默认为644,一般文件默认不给x权限
1 | mkdir -p /opt/susu/yiyi/ling #递归创建文件夹 |
权限位: User–Group–Ohter 各三个字符表示,字符有r(读)/w(写)/x(执行)/-
1 | chmod 0=--- /opt/susu #修改Ohter权限为--- |
递归修改-R
1 | chmod o+rx /opt/susu/yiyi #加可读可写权限 |
文件夹的权限可执行是指它的目录下的文件可执行,如果它的父目录没有可执行权限,那么不可移动等操作这个文件夹。
属组
1 | mkdir /susu01 |
1 | [root@localhost ~]# gpasswd -a zhangsan stugrp #加入组 |
权限位
1 | mkdir /student/ |
粘滞位
避免在同一个文件夹下不同用户互删文件
1 | [root@localhost ~]#chmod o+t /public/ #other的x被t覆盖 |
计划任务启动流程
查看进程
进程动态排名
1 | top -d3 #每三秒更新一次进程动态排名 |
查进程PID号
1 | pgrep -l crond |
进程管理
1 | # sleep 3 #占用前台终端三秒 暂停功能 |
- Ctrl + z 挂起当前进程
- jobs 查看后台任务列表
- fg 将后台任务恢复到前台
杀死进程
1 | [root@localhost ~]# kill [PID号] |
日志
tail -f 查看
1 | # tail -f /opt/1.txt |
服务器搭建
搭建ftp
FTP:文件传输协议 虚拟机 A(svr7)搭建基本 FTP 服务
安装 vsftpd 软件
1 | [root@JSever ~]# yum -y install vsftpd |
重启 vsftpd 服务
1 | [root@JSever ~]# systemctl restart vsftpd |
允许匿名访问
1 | [root@JSever ~]# vim /etc/vsftpd/vsftpd.conf |
anonymous_enable=NO 改成YES
客户机访问:
1 | [root@JClient ~]# firefox ftp://192.168.4.7 |
默认共享数据的目录:/var/ftp
上传
1 | ftp 192.168.4.5 |
必须要用户登录,匿名登陆会permission denied
搭建http服务
虚拟机 svr7 作为服务端,搭建 web 服务器
1、安装软件包
1 | [root@svr7 ~]# yum -y install httpd |
2、书写页面内容,重启服务
1 | [root@svr7 ~]# echo xixhaha > /var/www/html/index.html |
作为客户端测试,成功
1 | [root@pc207 ~]# curl 192.168.4.7 3 |
修改配置文件 /etc/httpd/conf/httpd.conf,改变网页文件存放路径
1 | [root@svr7 ~]# vim /etc/httpd/conf/httpd.conf |
改变网页文件存放路径
1 | [root@svr7 ~]# mkdir /var/www/myweb |
配置一个虚拟站点
• 配置文件路径
– /etc/httpd/conf/httpd.conf #主配置文件
– /etc/httpd/conf.d/*.conf #调用配置文件
为每个虚拟站点添加配置
<VirtualHost *:80>
ServerName 此站点的 DNS 名称
DocumentRoot 此站点的网页根目录
</VirtualHost>
虚拟机 svr7 作为服务端操作
1 | [root@svr7 ~]# vim /etc/httpd/conf.d/nsd01.conf |
1 | [root@svr7 ~]# mkdir /var/www/qq |
pc207 测试:
1 | [root@pc207 ~]# vim /etc/hosts 192.168.4.7 www.qq.com www.baidu.com |
第一个虚拟站点被视为默认站点
若想要原有的初始的话,虚拟站点配置上面另外加:
1 | <VirtualHost *:80> |