这是我参与8月更文挑战的第13天,活动详情查看:8月更文挑战
这是我从头开始学习Linux的学习笔记,后续还会更新。
记录自己的技术成长,也希望和大家分享交流,欢迎关注~
本笔记为coursera网站课程《Linux for Developers》的学习笔记
上周作业
1.如何修改配置文件:来设置启动时候是命令还是图形化桌面
**无论是作为上线的服务器还是开发中的虚拟机来说,都是没有必要启动图形界面的,而图形界面占用的内存还是很大的。**操作如下:
centos6
重启系统生效(永久)
[root@centos6 ~]# vim /etc/inittab
id:5:initdefault:
#关闭图形界面
在id:5:initdefault这一行中,将其改成id:3:initdefault:
#打开图形界面
在id:3:initdefault这一行中,将其改成id:5:initdefault:
立即生效(临时)
init 3 #关闭图形界面
init 5 #打开图形界面
但是由于我安装的是centos7,所以这样去修改配置文件失效。打开/etc/inittab,文档解释也证明了该方法失效。
centos7
重启系统生效(永久)
查看当前的默认目标,运行:
systemctl get-default
设置默认目标,运行:
systemctl set-default multi-user.target #关闭图形界面
systemctl set-default graphical.target #打开图形界面
立即生效(临时)
init 3 #关闭命令窗口界面
init 5 #打开图形界面
2.cache--memory--swap--disk这几个的概念和关系
硬盘disk
由于内存是带电存储的(一旦断电数据就会消失),而且容量有限,所以要长时间储存程序或数据就需要使用硬盘(外存储器)。硬盘也会影响系统速度,因为系统从硬盘中读取数据并通过总线存入内存的速度也会影响系统运行的快慢
内存memory
但是,CPU并不能直接调用存储在硬盘上的系统、程序和数据,必须首先将硬盘的有关内容存储在内存中,这样才能被CPU读取运行。因而,内存(即物理内存,是相对于硬盘这个“外存”而言)作为硬盘和CPU的“中转站”,对电脑运行速度有较大影响。
高速缓存cache
Linux 的高效利用空间特性,主要是利用空闲的物理内存,划分出一部份空间,做为 cache 和 buffers
,以此提高数据访问性能。
页高速缓存(cache)是 Linux内核实现的一种主要磁盘缓存。它主要用来减少对磁盘的I/O操作。具体地讲,是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理 内存的访问。
磁盘高速缓存的价值在于两个方面:
- 访问磁盘的速度要远远低于访问内存的速度,因此,从内存访问数据比从磁盘访问速度更快;
- 数据一旦被访 问,就很有可能在短期内再次被访问到。
交换空间swap
分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。
Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的。
一般不需要太关注Linux的内存占用情况,如果SWAP占用率很高的话一般可能就是内存不够用了。
跟 Windows 完全不同的 Linux 内存机制
**在 Linux 中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是 Linux 内存管理的一个优秀特性,在这方面,区别于 Windows 的内存管理。**主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高 Linux 系统的数据访问性能。而 Windows 是只在需要内存时,才为应用程序分配内存,并不能充分利用大容量的内存空间。换句话说,每增加一些物理内存,Linux 都将能充分利用起来,发挥了硬件投资带来的好处,而 Windows 只将其做为摆设,即使增加 8GB 甚至更大。
3.ip、网卡改写的配置文件
4.fstab文件
挂载
在linux操作系统中,挂载是一个非常重要的功能,使用非常频繁。它指将一个设备(通常是存储设备)挂接到一个已存在的目录上。(这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。)需要理解的是,linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备
/etc/fstab 文件解释
文件fstab包含了你的电脑上的存储设备及其文件系统的信息。**它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件。**作为系统配置文件,**fstab通常都位于/etc目录下,它包括了所有分区和存储设备的信息,以及它们应该挂载到哪里,以什么样子的方式挂载。**如果遇到一些类似于无法挂载你的windows分区,无法使用你的光驱,无法对某个分区进行写入操作什么的,那么基本上可以断定,你的fstab内容有问题了。
这个文件的全路径是/etc/fstab。它只是一个文本文件,你能够用你喜欢的编辑器打开它,但是必须是root用户才能编辑它。同时fsck、mount、umount的等命令都利用该程序。
具体来说:用fstab可以自动挂载各种文件系统格式的硬盘、分区、可移动设备和远程设备等。对于Windows与arch双操作系统用户,用fstab挂载FAT格式和NTFS格式的分区,可以在Linux中共享windows系统下的资源。
操作
1.先在用fdisk -l(可能需要在root权限下)得到硬盘信息表,例如:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S2JeGxUk-1614661890114)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218123959594.png)\
从上面知道,这台电脑上只有一个硬盘,sda1为可以启动的。下面把系统盘以只读方式持载上去
2.用你喜欢的编辑器在终端中打开/etc/fstab,例如:
vi /etc/fstab
在文件末尾加入:
/dev/sda1 /mnt/WindowsC vfat defaults,codepage=936,iocharset=cp936,umask=0222 0 0
保存,退出。
**警告:**使用936的codepage挂在fat32分区可能会造成linux下识别中文正常但是到windows下反而出现乱码,推荐替换成utf8,但是dmesg提示警告,没有关系,n多人用了这么长时间都没有问题
/dev/sda1 /mnt/hsfg vfat user,utf8,umask=000 0 0
在/etc/fstab文件里,
第一列是挂载的文件系统的设备名,
第二列是挂载点,
第三列是挂载的文件系统类型,
第四列是挂载的选项,
选项间用逗号分隔。
3.在终端中输入
mount -a
你就应该能在/mnt/hsfg下找到你的系统分区sda1内容。
但是由于虚拟机的sda1设备里面没有存东西,所以挂载的文件夹里也没有东西。
5.xshell
Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
很多人在安装虚拟机的时候安装结束之后,就在Linux进行操作,当然如果你能忍受centos自己的黑底白字,而且不能改变字体大小的设定。**你完全就可以用centos终端的界面来输入命令完成学习。xshell不是必需品,但是它能更好的辅助我们学习linux。**毕竟是windows下的软件,不需要频繁去按ctrl+alt来释放鼠标。很方便。他可以将你的Windows系统和你的Linux系统链接起来,让你在Windows系统下,去操作你的Linux系统。
但是由于该功能类似于之前实现的ssh,从windows的cmd直接访问linux的终端,所以不再实现。
6.netstat查询处于监听的接口
netstat - 打印网络连接、路由表、接口统计、伪装连接和多播成员关系
netstat [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]
7.shell指令(复习)
常用文件操作:
1、编辑文件 vi 文件名 (或者说是新建文件并用vi编辑)
2、复制文件 cp a文件 b文件 (将a文件复制一份,b就是复制文件(副本)。(两个文件都在当前路径,可以分别指定路径)
3、复制文件目录 cp a目录 b目录 -r 将a目录(包含里面的全部文件)内容 复制到b目录下,(-r 递归复制)
4、新建文件 touch 文件名 (文件不存在就新建,存在就更新新建的最新修改时间)
5、移动文件 mv a文件 b目录 (将a文件移动到b目录下)
6、重命名文件 mv a文件 b文件 (将a文件命名为b文件,注:都是在当前路径下)
7、删除文件 rm a文件 (删除a文件)
8、删除文件目录 rm a目录 -r (删除a目录,包括里面的文件)
命令 | 功能 | 示例 | 备注 |
---|---|---|---|
alias | 给命令起别名 | alias c=’clear’ | 取 clear 的别名为 c |
cat | 显示文本内容 | cat file | 显示 file 的内容 |
cd | 改变当前路径 | cd /etc | 转到/etc 中去 |
chmod | 修改文件访问权限 | chmod 644 file | 改 file 的权限为 644 |
chown | 修改文件所有者 | chown foo file | 改 file 的所有者为 foo |
clear | 清屏 | clear | 清屏 |
cp | 拷贝文件 | 1: cp file1 file22: cp dir1.0/ dir2.0/ -r | 1: 拷贝 file1 为 file22: 拷贝 dir1.0/为 dir2.0/ |
df | 查看文件系统信息 | df -h | 显示文件系统信息 |
diff | 比较两文件的异同 | 1: diff file1 file2 -uN 2: diff dir1/ dir2/ -urN | 1: 比较 file1 和 file22: 比较 dir1/和 dir2/ |
dpkg | 手工安装软件包 | dpkg -i example.deb | 安装 example.deb |
echo | 显示字符串 | echo “hello!” | 显示“hello!” |
find | 查找文件 | find / -name “*.c” | 找出/下的所有.c 文件 |
grep | 查找字符串 | grep “abc” ./* -rwHn | ./*中找字符串 “abc” |
ifconfig | 查看或修改网络 | ifconfig eth0 | 查看 eth0 的网络信息 |
kill | 发送信号 | kill -s SIGKILL 1234 | 给进程 1234 发送信号 SIGKILL |
ln | 创建链接文件 | 1: ln apple a2: ln apple a -s | 1: 取 apple 别名为 a2: 创建一个符号链接 a 指向 apple |
ls | 列出文件信息 | ls | 列出(当前目录)文件信息 |
man | 查找帮助信息 | man ls | 查找关于 ls 命令的帮助 |
mount | 挂载或卸载分区 | mount /dev/x /mnt | 将/dev/x 挂接到/mnt 下 |
more | 分屏显示信息 | ps -ef | more | 分屏显示 ps -ef 的信息 |
less | 与more类似 | less a.txt | 显示a.txt文件内容 |
head | 显示文件的 开头若干行 | more a.txt | 显示a.txt的前10行内容 |
tail | 显示文件的末尾若干行 | tail a.txt | 显示a.txt的最后10行内容 |
mkdir | 创建目录 | mkdir dir/ | 创建新目录 dir/ |
mv | 移动或重命名文件 | 1: mv file1 file2 2: mv file dir/ | 1: 改 file1 名字为 file22: 将 file 移动到 dir/去 |
pwd | 显示当前路径 | pwd | 显示当前路径 |
ps | 查看系统进程信息 | ps -ef 或者 ps ajx | 查看系统进程信息 |
rm | 删除文件 | 1: rm file2: rm dir/ -r | 1: 删除 file2: 递归地删除 dir/ |
sort | 排序 | sort file | 对 file 排序后打印到屏幕 |
tar | 归档或释放 压缩或解压 | 1: tar cjf a.tar.bz2 *2: tar xjf a.tar.bz2 3: tar czf a.tar.gz *4: tar xzf a.tar.gz | 1: 将所有文件压缩为.bz22: 解压.bz2 文件3: 将所有文件压缩为.gz4: 解压.gz 文件 |
uniq | 去掉相邻重复的行 | uniq file | 去除 file 中相邻的重复行 |
wc | 计数器 | wc a | 计算 a 的行、单词和字符 |
which | 查找所在路径 | which ls | 显示命令 ls 所在路径 |
touch | 修改文件的时间戳,或创建文件 | touch a.txt | a.txt存在就修改其时间戳,不存在就创建 |
都看到这里了,不如点个赞哦~