linux 基本操作笔记

linux文件系统的实现

linux有一个树状结构来组织文件,数的顶端为根目录/,节点为目录,而末节点为所包含的数据文件。我们可以对文件进行多种操作,比如打开和读写。

存储设备分区

文件系统的最终目的是把大量数据有组织地放入持久性的存储设备中,比如硬盘和磁盘。这些存储设备和内存不同,它们的存储能力具备持久性,不会因为断电而消失,存储量大,但读取速度慢。

数据被存入某个分区中,一个典型的Linux分区(partition)包含有下面各个部分:

分区的第一个部分是启动区(Boot block),它主要是为计算机开机服务的。linux开机启动后后,会首先载入MBR,随后MBR从某个硬盘的启动区加载程序。该程序负责进一步的操作系统的加载和启动。为了方便管理,即使某个分区中没有安装操作系统,Linux也会在该分区预留启动区。

启动区之后的是超级区(Super block)。它存储有文件系统的相关信息,包括文件系统的类型,inode的数目,数据块的数目。

随后是多个inodes,它们是实现文件存储的关键。在Linux系统中,一个文件可以分成几个数据块存储每个文件对应一个inode。这个inode中包含多个指针,指向属于该文件各个数据块。当操作系统需要读取文件时,只需要对应inode的"地图",收集起分散的数据块,就可以收获我们的文件了。

最后一部分是真正存储数据的数据块data blocks。

当Linux想要打开一个文件时,只需要找到文件对应的inode,然后沿着指针,将所有的数据块收集起来,就可以在内存中组成一个文件的数据了。复杂的方式可以使用链表,每个数据快都有一个指针,指向属于同一个文件的下一个数据块,这样的好处是可以利用零散的空余空间,坏处是文件操作必须按照线性方式进行,如果想随机存取,那么必须遍历链表,指导目标位置。

列出文件夹内详细文件信息

ls是list的意思,重点在显示文件的文件名与相关属性。而选项『-al』则表示列出所有的文件详细的权限与属性 。

[email protected]:~$ ls -al

1)第一栏代表这个文件的类型与权限(permission):

第一个字符d则是目录,当为-则是文件,若是[ l ]则表示为连结档(link file),是b则表示为装置文件里面的可供储存的接口设备(可随机存取装置),若是c则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,均为rwx三个参数组合,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。第一组为文件拥有者的权限,第二组为同群组的权限,第三组为其他非本群组的权限

2)第二栏表示多少个档名连结到此节点

3)第三栏表示文件的拥有帐号

4)第四栏表示这个文件所属群组

5)第五栏表示这个文件的容量大小,默认单位为bytes

6) 第六栏表示这个文件的建档日期或是最近的修改日期

创建文件夹

[email protected]:~/Desktop/linux_study$ mkdir test
[email protected]:~/Desktop/linux_study$ ls
test

删除空文件夹

[email protected]:~/Desktop/linux_study$ rm test
rm: cannot remove ‘test’: Is a directory
[email protected]:~/Desktop/linux_study$ rmdir test
[email protected]:~/Desktop/linux_study$ ls

改变文件属性与权限

chgrp  :改变文件所属群组
chown  :改变文件拥有者
chmod  :改变文件的权限, SUID, SGID, SBIT等等的特性

改变文件所属群组

[email protected]:~/Desktop/linux_study$ sudo chgrp users linux_study

 

 

改变文件拥有者

[email protected]:~/Desktop/linux_study$ sudo chown root linux_study

改变文件权限

[email protected]:~/Desktop/linux_study$ sudo chmod 755 linux_study

更改文件的权限为755: owner r+w+x, group: r+x, others: r+x

文件显示

$cat filename         : 显示文件
$cat file1 file2      : 连接显示file1和file2
$head -1 filename     :显示文件第一行
$tail -5 filename     : 显示文件倒数第五行
$diff file1 file2     :显示file1和file2的差别

统计文件中行数、词和字符数目

[email protected]:~/Desktop/linux_study$ wc test2
 6 15 71 test2

显示日期

$date +"%Y-%m-%d_%T"
以YYYY-MM-DD_HH:MM:SS的格式显示日期时间 (格式可参考$man date)

 $date --date="1999-01-03 05:30:00"
 显示从1900-01-03 05:30:00具体信息

网络

显示网络借口以及相应的IP地址。ifconfig可用于设置网络接口:

[email protected]:~/Desktop/linux_study$ ifconfig

运行eth0接口

[email protected]:~/Desktop/linux_study$ sudo ifup eth0

关闭eth0接口

[email protected]:~/Desktop/linux_study$ sudo ifdown eth0

显示无线网络接口

[email protected]:~/Desktop/linux_study$ iwconfig

显示路由表。route可用于修改路由表

[email protected]:~/Desktop/linux_study$ iwconfig

 当前网络连接状态

[email protected]:~/Desktop/linux_study$ netstat

发送ping包到地址IP

[email protected]:~/Desktop/linux_study$ ping 10.21.171.15

向DHCP主机发送DHCP请求,以获得IP地址以及其他设置信息

[email protected]:~/Desktop/linux_study$ sudo dhclient

使用wget 下载url指向的资源

[email protected]:~/Desktop/linux_study$ sudo dhclient

DNS查询,寻找域名domain对应的ip

[email protected]:~/Desktop/linux_study$ sudo dhclient

打包和压缩

比较大型的文件透过所谓的文件压缩技术之后,可以将他的磁碟使用量降低, 可以达到减低文件容量的效果。

linux 支持的压缩命令非常多,且不同的命令所用的压缩技术并不相同,当然彼此之间可能就无法互通压缩/解压缩文件,区分不同的压缩文件通常通过后缀的扩展名。

gzip或bzip2压缩test

[email protected]:~/Desktop/linux_study$ gzip test

解压test

[email protected]:~/Desktop/linux_study$ gzip -d test

打包命令: tar

[[email protected] ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
[[email protected] ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[[email protected] ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩

将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

[[email protected] ~]# cd /usr/local/src
[[email protected] src]# tar -zxvf /tmp/etc.tar.gz

linux进程基础

计算机实际上可以做的事情实质非常简单,比如会所两数求和,查找内存中的地址等等。这些基础的计算机动作被称为“指令”。所谓的程序就是这一系列指令的集合。通过程序,我们可以让计算机完成复杂的操作。

程序大多数会被存储为可执行的文件。

进程和程序的区别

进程是程序的一种具体实现。进程是执行程序的过程。查询正在运行的进程:

flor[email protected]:~$ ps -eo pid,comm,cmd

-e代表列出全部进程,-o pid,comm,cmd代表我们需要pid,comm和cmd信息。

每一行代表一个进程,三列的信息分别代表,每一行进程的唯一PID表示、COMMAND是进程的简称、CMD是进程所对应的程序以及运行时所带的参数(对于使用使用[ ]的,是kernel的一部分功能,被打扮成进程的样子,方便操作系统管理)。

如何创建进程

实际上计算机在开机的时候,内核kernel只建立了一个init进程,linux kernel是并不直接建立新进程的系统调用。所有的进程是通过fork机制建立的。(fork,新的进程需要通过的的进程复制自身得到)。当进程fork的时候,linux在内存中开辟出一片新的内存空间给新的进程,并将老的进程空间中的内容复制到新的空间中,从此两个进程同时运行。可以通过pstree命令来显示整个进程树:

子进程的终结

当子进程终结时,会通知父进程清空自己所占据的内存,并在kernel中留下自己退出信息。

父进程在得知子进程终结时,会对该子进程使用wait系统调用。这个wait函数能从kernel中取出子进程的退出信息,并清空该信息在kernel中所占据的空间。

但是,如果父进程早于子进程终结,子进程就会成为一个孤儿(orphand)进程。孤儿进程会被过继给init进程,init进程也就成了该进程的父进程。init进程负责该子进程终结时调用wait函数。

linux信号程基础

kernel内有若干个进程,每个进程不允许该进程之外的人进入,这样对于每个进程来说是一个保护机制 ,但是有时候需要打破封闭的保护,以便和进程交流信息。

这样就需要一种通信方式。传递的信号比较粗糙 ,只能是一个整数,但正是因为传递的信息量很少,信号才便于管理和使用。

信号被经常用于系统管理相关的任务,比如通知进程终结、中止或者恢复等等,由内核管理,也可以由内核产生。

通过ping来查询进程的PID,然后可以通过kill命令来向某个进程发出信号:

$kill -SIGCONT 9575

传递SIGCONT信号给ping进程。

信号处理

所有的信号都采用了对应信号的默认操作,但并不绝对,当进程决定执行信号的时候,有集几种可能:

1)无视。信号被清除,进程本身补采取任何特殊的操作。

2)默认。每个信号对应一定的默认操作,比如上面所提及的SIGCONT用于继续进程。

3)自定义操作。也叫做获取信号,执行进程中预设的对应于该信号的操作。

时间: 2024-07-29 04:33:11

linux 基本操作笔记的相关文章

linux 基本操作--笔记

linux 基本操作: pwd 显示当前目录 ll 用于查看文件和目录,即list,其参数比较多 -l 列出数据串,包含文件的属性和权限数据等 -a 列出全部文件,包含隐藏文件 -d 仅列出目录本身,而不是列出目录下的文件数据 -h 讲文件容量以易读方式列出,如GB,KB -R 递归列出该目录及其子目录下的内容 cp 即copy,用于复制文件,可以将多个文件一次性的肤质到一个目录下 mv 即move,用于移动文件,目录,更名 cp -a file1 file2 连同file1的所有特性把文件复制

Linux基本操作笔记

1.Linux是一个统称,内核是一致的.分为Linux系统管理员和Linux程序员包括管理和软件开发. 2.要掌握Linux,有四步,第一,在Linux平台上的开发,比如,vi.gcc.gdb等和Linux相关的基本操作:第二,c语言基础功底:第三,在Linux环境下的高级编程:第四,Linux应用系统开发或嵌入式开发. 3.工具书,先知道怎么做,在去探索为什么这么做:适当的囫囵吞枣: 4.特点,第一,开源,免费,第二,安全,第三,多线程,多用户,第四,对内存和管理有自己的特点.运行内存要求小,

linux视频笔记(韩顺平1-5)

一.linux概况: 1.linux市场需求: linux系统管理员.linux程序员(需掌握C/C++.java.php.jsp...),包括linux软件工程师和linux嵌入式开发 2.学习流程: ·1 linux平台上的开发,包括vi.gcc.gdb.make.jdk.tomcat.mysql及其它linux基本操作 ·2加厚C语言功底<C专家编程>或java语言 ·3学习unix环境高级编程 ·4linux应用系统开发.linux嵌入式开发 3.学习秘诀:思考--实践-----再思考

嵌入式Linux学习笔记(基于S5PV210 TQ210)

基于S5PV210.TQ210平台. 本文更多的是教会大家如何学习! 包括如下内容: 1.前言 2.开发环境搭建 3.制作交叉编译器 4.裸机编程 4.1.汇编学习 4.2.S5PV210启动流程 4.3.点亮一个LED 4.4.串口 4.5.实现printf 4.6.时钟配置 4.7.重定位 4.8.DDR 4.9.NAND读写 4.11.LCD操作 5.移植u-boot(基于u-boot-2014.4版本) 5.1.概述 5.2.u-boot配置过程分析 5.3.u-boot编译过程分析 5

linux 文件系统笔记

文件格式: windows:PE linux:  ELF 文件系统: rootfs FHS:规定linux应该创建哪些目录 /下的目录结构: /boot: 系统启动相关的文件,如内核,initrd,以及 grub(bootloader) /dev :设备文件(例如:光盘,cdrom) 类型: 块设备:随机访问, 数据块 字符设备:线性访问, 以字节为单位 设备号:主设备号(major),次设备号(minor) /etc:  配置文件(绝大多数为纯文本格式) /home: 用户的家目录,默认为/h

linux学习笔记(一)-文件目录相关的命令&&文件通配符

一.几个命令概述 1.查看目录以及目录底下的文件:ls(-a显示隐藏文件:-d显示目录本身:-l显示详细内容:-R递归显示,即把子目录的文件也显示出来:-h以更加被人类理解的格式显示,比如显示文件大小的时候用M为单位显示:-i显示文件索引ID) 2.查看文件内容:cat,head,tail,less,more,tac cat:将文件连接起来,输出在屏幕上,可接多个文件(-E:显示隐藏的换行符:-n:显示出行号) head:默认查看文件的前10行(-n#:查看文件的前#行.空白行也是一行) tai

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

Linux学习笔记——例说makefile 增加系统共享库

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [代码仓库]--makefile-example

Linux学习笔记——如何使用echo指令向文件写入内容

0.前言 本文总结如何使用echo命令向文件中写入内容,例如使用echo指令覆盖文件内容,使用echo指令向文件追加内容,使用echo指令往文件中追加制表符. echo向文件中输出内容的基本方法是使用IO重定向指令--">",默认情况下echo输出到标准输出中,使用>指令可重定向输出到文件中. 1.echo指令基本用法 [1]Linux官方用户手册--echo指令 [2]输入指令获得帮助 sudo echo --help 返回内容如下 用法:echo [短选项]... [字