【Linux】Linux学习笔记(完结)
前言
在工作中发现
Linux系统的重要性,于是计划重温下Linux,顺便记录笔记方便之后查阅。
磁盘分区
- 在
Linux系统中,每个设备都被当成一个文件来对待;如IDE接口的硬盘文件名为/dev/hd[a-d]。 - 磁盘的第一个扇区记录了
主引导分区(MBR)和分区表;主引导分区可以安装引导加载程序的地方,有446bytes,系统开机时会主动读取MBR区块的内容;分区表记录硬盘分区状态,有64bytes。 - 磁盘分区是对
分区表进行设置,默认分区表仅能写入四组分区信息,四组分区信息称为主或扩展分区。 - 使用扩展分区划分出来的为
逻辑分区,其编号从5开始,如/dev/hda5/、/dev/hda6...。前四个分区号均保留。 主与扩展分区最多有4个``扩展分区最多只有1个,逻辑分区是由扩展分区分割出来的分区,只有主分区和逻辑分区能够被格式化,扩展分区不能。- 若
扩展分区被破坏,所有逻辑分区将会被删除。 BIOS是写入到硬件上的程序,其会根据用户设置取得能够开机的硬盘,并且到该硬盘下读取第一个扇区的MBR位置,MBR中存放了最基本的引导加载程序,接下来由引导加载程序(boot loader)加载内核文件,然后内核文件开始操作系统的功能。引导加载程序主要提供三个服务:- 提供菜单:可选择不同开机选项,是多重引导的重要功能。
- 载入内核文件:指向可开机的程序区段来开始操作系统。
- 转交其他loader:将引导加载功能转交给其他loader负责。
引导加载程序除了可以安装在MBR外,还可以安装在每个分区的引导扇区。- 每个分区拥有自己的
启动扇区,实际可开机的内核文件放置在各分区内,loader只认识自己系统分区内的可开机内核文件以及其他loader,loader可直接指向或间接将管理权转交给另一个管理程序。
系统登录
Linux默认提供6个Terminal供用于登录,切换方式为Ctrl+Alt+[F1-F6],名称分别为tty1-tty6,使用Ctrl+Alt+F7可切换至图形界面。- 若以纯文本环境启动
Linux,若想启动图形界面,可使用startx命令启动图形界面。 - 使用
man + 命令可查看帮助,如man date。 - 使用
shutdown命令关机,如shutdown -h now表示现在关机,shutdown -h 20:25表示20:25关机。
文件权限和目录配置

分为七列,分别代表
文件权限、连接数、文件所有者、文件所属用户组、文件大小、文件最后被修改的时间、文件名。
- 第一列做如下划分:
- 第一个字符若为
d,则表示目录,若为-,则表示文件,若为|,则表示为连接文件(linkfile)、若为b,表示设备文件里的可供存储的接口设备、若为c,表示设备文件里的串行端口设备,如键盘鼠标等。 - 接下来三个字符为一组,可分为三组,且均为
rwx组合,r代表可读,w代表可写,x代表可执行,其位置不会变化,若无权限,则为-;第一组为文件所有者的权限、第二组为同用户组的权限、第三组为其他非本用户组的权限。
- 第一个字符若为
chgrp改变文件所属用户组;chown改变文件所有者;chmod改变文件权限。在改变时发现无权限可以使用sudo ch***试试。- 改变所有者可使用
chown user:group ***的格式,如chown root:root log.log将log.log改为root组下的root帐号。 r:4;w:2;x:1,可使用数字更改权限属性,权限分为三组,分别对应owner、group、others,如chmod 777 .bashrc表示owner、group、others都具有读写执行权限。- 可使用
chmod u=rwx,go=rx .bashrc更改权限,owner具有读写执行权限;group和others具有读写权限。 - 能否进入某个目录,只与该目录的
x权限有关,若具有权限,则可进入,否则不可进入。 - 单一文件或目录的最大容许文件名为
255个字符,包含完整路径名称及目录/的完整文件名为4096个字符。 - 可使用
mkdir -p test/test/test/test一次性创建所有的目录。
文件与目录管理
- 使用
cp -r dir1 dir2/将dir1目录复制到dir2目录下。 - 使用
mv test1 test2将test1更名为test2。 cat、more、less、head、tail可查看文件。tail -f filename,可查看filename不断新增的内容。
磁盘与文件系统管理
扇区是最小的物理存储单位,大小为512bytes,扇区组成柱面,柱面是分区的最小单位。挂载点一定是目录,该目录为进入该文件系统的入口。- 可使用
df命令查看磁盘的使用情况。
文件与文件系统压缩和打包
- 使用
tar -zcvf git.tar.gz git/命令压缩git目录至git.tar.gz。 - 使用
tar -zxvf git.tar.gz命令解压缩git.tar.gz至本目录下。
Vim编辑器
G(Shift+g)移动到最后一行,gg移动到第一行。dd删除光标所在的一整行。x向后删除一个字符(Del),X向前删除一个字符(Backspace)。
认识学习Bash
- 对于变量赋值而言,等号两边不能接空格,如
myname = leesf会报错。 - 使用
bash可以进入子进程,但进程的自定义变量无法在子进程内使用,exit退出子进程,通过export将变量变成环境变量后,就能够在子进程中使用。 - 使用
set可查看所有变量(含环境变量和自定义变量) - 使用
set | grep HISTFILE可查看历史命令记录的放置文件和历史命令记录大小。 - 使用
echo $?查看上个命令执行的回传码(若执行成功,返回0,否则为非0)。 - 使用
echo $$可以查看本PID。 - 使用
alias cls='clear'设置清屏的别名。 - 使用
history可以显示所有历史命令。 - 使用
!!或者向上箭头+Enter执行上一条命令。 - 使用
!al执行最近以al为开头的命令。 - 可修改
~/.bashrc或~/.bash_profile文件进行个人设置,并使用source ~/.bashrc或source ~/.bash_profile使其生效,有时可能需要重新登出登入操作,登出使用exit即可。 - 标准输入代码为
0,使用<或<<;标准输出代码为1,使用>或>>;标准错误输出代码为2,使用2>或2>>。其中>>表示累加,>表示覆盖。 - 使用
/dev/null将stderr信息丢弃,如find /home -name .bashrc 2> /dev/null,表示将stderr丢弃。 - 若想将错误信息和正确信息都写进同一文件中,需使用特殊用法,如
find /home -name .bashrc > list 2>&1或者find /home -name .bashrc &> list。 cat > catfile < ~/.bashrc将~/.bashrc的内容输出至catfile中。cat > catfile << "eof"使用eof作为结束输入控制符。- 可将多个命令组合一次性执行,如
ll;ll;shutdown -h now,先执行两次ll,然后执行关机操作。 - 可根据上个命令执行状态确定下个命令是否执行,上个命令回传码为
0表示成功,非0表示失败。 cmd1 && cmd2表示若cmd1执行完毕且正确执行,则执行cmd2,否则不执行cmd2;cmd1 || cmd2表示cmd1执行完毕且正确执行,则不执行cmd2,否则执行cmd2。- 管道命令仅会处理
standard output,对于standard error output予以忽略。 - 常见的管道命令如下,
cut、grep、sort、wc、uniq、tee等。 - 使用
tar -cvf - /home | tar -xvf -,可将/home打包后再解压到当前目录。 - 使用
sed -i 's/This is/That is/g' test将test文件中所有This is替换成That is。 - 使用
sed -i '$a the end' test可以在test文件末尾添加the end,其中$表示最后一行,a表示新增。 - 使用
awk命令处理每行的数据。如awk '{FS=":"} $1 "\t" $3'表示自定义分隔符为:,并将第一列与第三列输出。 - 使用
diff test1 test查看test和test1之间的异同。
学习Shell Script
shell.sh文件必须要具备可读可执行(rx)权限。script脚本第一行#!/bin/bash声明了这个script使用的shell名称。- 使用
source test.sh和sh test.sh执行时,前者是直接在父进程中运行,变量再父进程中有效,后者在子进程中运行,父进程中无效。 - 可在
sh test.sh后面接参数,并使用$#、$1、$2...等进行获取,其中$0表示执行的shell脚本名。; - 对于某些机器而言,需要使用
bash test.sh执行脚本。 - 由于
shell是由上往下执行,需要在最前面定义函数。 - 取计算所得变量值时,建议使用
$((运算内容))。
帐号管理与ACL权限设置
- 登录时会取得用户ID,即
UID和用户组ID,即GID。 - 可使用
su或sudo命令切换身份。
磁盘配额与高级文件系统管理
RAID-0为等量模式,性能最佳;RAID-1为映像模式,完整备份,整个RAID容量几乎减少一半;RAID-5对性能和数据备份进行了均衡考虑,当损坏的磁盘数量大于等于两块时,整组RAID-5的数据就毁了,其默认只支持一块磁盘损坏的情况。
例行性工作
at可以处理仅执行一次就结束调度的命令;crontab所设置的命令将会循环一直进行下去。- 命令
at now + 1 minutes表示一分钟后执行命令。 - 使用命令
atq可以查询有哪些任务,使用atrm [jobnumber]可删除指定job number的任务。 - 还可使用
batch命令创建任务,表示当系统有空时才运行。 0 3,6 * * * command表示3点和6点都执行指定命令;20 8-12 * * * command表示8点到12点(包括)的之间的每个小时的20分都进行执行命令;*/5 * * * * command表示每隔5分钟就执行命令,也可以写成0-59/5 * * * * command。- 使用
crontab执行sh文件时,建议使用绝对路径。
程序管理
- 触发任何一个事件时,系统都会将它定义为一个进程,并且给予这个进程一个
ID,称为PID,同时触发这个进程的用户和相关属性关系,给予这个PID一组有效的权限设置。 - 父进程可通过复制(
fork)方式产生一模一样的子进程,然后被复制出来的子进程再以exec方式执行实际要进行的进程,最终就成为一个子进程。 - 系统先以
fork方式复制一个与父进程相同的暂存进程,这个进程与父进程唯一的区别就是PID不同,这个暂存进程还会多一个PPID的参数,其为父进程的标识符。 - 可使用
&将任务丢到后台进行。(避免使用ctrl + c中断,若注销时,还是会中断执行) - 可使用
jobs -l命令查看目前的后台工作状态。 - 使用
fg %jobnumber命令将后台工作拿到前台执行,如先使用vim kill.sh &,然后使用jobs -l,最后使用fg 1命令。 - 使用
bg %jobnumber命令运行后台命令。 - 使用
kill -9 %jobnumber删除指定后台任务。 nohup [命令与参数]在终端机前台中工作,nohup [命令与参数] &在终端机后台中工作。即便注销,也依旧执行。ps aux可查看所有的进程数据。top命令监控进程运行状态,如top -d 2表示两秒更新一次各进程状态。uname命令可查看系统与内核相关信息,如uname -s查看系统内核名称。uptime命令可查看系统启动时间与工作负载。fuser命令通过文件找出正在使用该文件的程序。lsof命令列出被进程所打开的文件名。pidof命令找出某个正在执行的进程的PID。
总结
对于一般的编程作业中,只需了解
Linux主要命令即可,Linux私房菜中后面的部分由于在编程中接触较少,因此不再学习,有兴趣的读者可自行阅读。
【Linux】Linux学习笔记(完结)的更多相关文章
- linux 驱动学习笔记01--Linux 内核的编译
由于用的学习材料是<linux设备驱动开发详解(第二版)>,所以linux驱动学习笔记大部分文字描述来自于这本书,学习笔记系列用于自己学习理解的一种查阅和复习方式. #make confi ...
- Linux系统学习笔记:文件I/O
Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...
- Linux内核学习笔记-2.进程管理
原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- Linux内核学习笔记-1.简介和入门
原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- Linux内核学习笔记二——进程
Linux内核学习笔记二——进程 一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...
- 20135316王剑桥Linux内核学习笔记
王剑桥Linux内核学习笔记 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计算机是如何工作的 个人理 ...
- Linux命令学习笔记目录
Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 ...
- linux kernel学习笔记-5内存管理_转
void * kmalloc(size_t size, gfp_t gfp_mask); kmalloc()第一个参数是要分配的块的大小,第一个参数为分配标志,用于控制kmalloc()的行为. km ...
- linux命令学习笔记(25):linux文件属性详解
Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组. 最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loc ...
- 深挖计算机基础:趣谈Linux操作系统学习笔记
参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...
随机推荐
- C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
一.引言 今天我们开始讲"行为型"设计模式的第三个模式,该模式是[迭代器模式],英文名称是:Iterator Pattern.还是老套路,先从名字上来看看."迭代器模 ...
- Vue.js简单的应用
1:一个简单实现 下面代码部分: <body> <div id="myDiv1"> {{userName}} </div> </body& ...
- View处理常用方法封装
处理View常用的一些方法:Drawable和Bitmap互相转换,Bitmap改变大小,dp.px互相转换,sp.px互相转换,根据Id查找Drawable,获取屏幕大小等方法. import an ...
- 十一、VueJs 填坑日记之使用Amaze ui调整列表和内容页面
上一篇博文我们整合了Amaze ui,并且调整了一个头部header和底部footer文件,其实做起来也很简单,只要按照步骤来做,完全没有问题.今天我们来重新调整一下列表页面和内容页面,使我们做的后台 ...
- .bash_profile 加载
1.Debian默认的shell是Bash, 1.1 命令行 和 ssh 登录 ,首先读入 /etc/profile,这是对所有用户都有效的配置:然后依次寻找下面三个文件,这是针对当前用户的配置. ~ ...
- 第十一章 泛型算法 C++ PRIMER
vector<int>::const_iterator result = find(vector.begin(). vector.end(),search_value); 如果查找失败,分 ...
- js监听浏览器离开页面操作
序言 大家是否经常遇到在关闭网页的时候,会看到一个确定是否离开当前页面的提示框?想一些在线测试系统.信息录入系统等就经常会有这一些提示,避免用户有意或者无意中关掉了页面,导致数据丢失.这里面的实现过程 ...
- VSCode 同步设置及扩展插件 实现设备上设置统一
准备工作:电脑上需安装VSCode,拥有一个github账户.实现同步的功能主要依赖于VSCode插件 "Settings Sync" Setting Sync 可同步包含的所有扩 ...
- 第六届河南省赛 River Crossing 简单DP
1488: River Crossing Time Limit: 1 Sec Memory Limit: 128 MB Submit: 83 Solved: 42 SubmitStatusWeb ...
- sqoop实现关系型数据库与hadoop之间的数据传递-import篇
由于业务数据量日益增长,计算量非常庞大,传统的数仓已经无法满足计算需求了,所以现在基本上都是将数据放到hadoop平台去实现逻辑计算,那么就涉及到如何将oracle数仓的数据迁移到hadoop平台的问 ...