前言

在工作中发现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默认提供6Terminal供用于登录,切换方式为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.loglog.log改为root组下的root帐号。
  • r:4;w:2;x:1,可使用数字更改权限属性,权限分为三组,分别对应ownergroupothers,如chmod 777 .bashrc表示owner、group、others都具有读写执行权限。
  • 可使用chmod u=rwx,go=rx .bashrc更改权限,owner具有读写执行权限;groupothers具有读写权限。
  • 能否进入某个目录,只与该目录的x权限有关,若具有权限,则可进入,否则不可进入。
  • 单一文件或目录的最大容许文件名为255个字符,包含完整路径名称及目录/的完整文件名为4096个字符。
  • 可使用mkdir -p test/test/test/test一次性创建所有的目录。

文件与目录管理

  • 使用cp -r dir1 dir2/dir1目录复制到dir2目录下。
  • 使用mv test1 test2test1更名为test2
  • catmorelessheadtail可查看文件。
  • 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 ~/.bashrcsource ~/.bash_profile使其生效,有时可能需要重新登出登入操作,登出使用exit即可。
  • 标准输入代码为0,使用<或<<;标准输出代码为1,使用>或>>;标准错误输出代码为2,使用2>或2>>。其中>>表示累加,>表示覆盖。
  • 使用/dev/nullstderr信息丢弃,如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,否则不执行cmd2cmd1 || cmd2表示cmd1执行完毕且正确执行,则不执行cmd2,否则执行cmd2
  • 管道命令仅会处理standard output,对于standard error output予以忽略。
  • 常见的管道命令如下,cutgrepsortwcuniqtee等。
  • 使用tar -cvf - /home | tar -xvf -,可将/home打包后再解压到当前目录。
  • 使用sed -i 's/This is/That is/g' testtest文件中所有This is替换成That is
  • 使用sed -i '$a the end' test可以在test文件末尾添加the end,其中$表示最后一行,a表示新增
  • 使用awk命令处理每行的数据。如awk '{FS=":"} $1 "\t" $3'表示自定义分隔符为:,并将第一列与第三列输出。
  • 使用diff test1 test查看testtest1之间的异同。

学习Shell Script

  • shell.sh文件必须要具备可读可执行(rx)权限。
  • script脚本第一行#!/bin/bash声明了这个script使用的shell名称。
  • 使用source test.shsh test.sh执行时,前者是直接在父进程中运行,变量再父进程中有效,后者在子进程中运行,父进程中无效。
  • 可在sh test.sh后面接参数,并使用$#、$1、$2...等进行获取,其中$0表示执行的shell脚本名。;
  • 对于某些机器而言,需要使用bash test.sh执行脚本。
  • 由于shell是由上往下执行,需要在最前面定义函数。
  • 取计算所得变量值时,建议使用$((运算内容))

帐号管理与ACL权限设置

  • 登录时会取得用户ID,即UID和用户组ID,即GID
  • 可使用susudo命令切换身份。

磁盘配额与高级文件系统管理

  • 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学习笔记(完结)的更多相关文章

  1. linux 驱动学习笔记01--Linux 内核的编译

    由于用的学习材料是<linux设备驱动开发详解(第二版)>,所以linux驱动学习笔记大部分文字描述来自于这本书,学习笔记系列用于自己学习理解的一种查阅和复习方式. #make confi ...

  2. Linux系统学习笔记:文件I/O

    Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...

  3. Linux内核学习笔记-2.进程管理

    原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...

  4. Linux内核学习笔记-1.简介和入门

    原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...

  5. Linux内核学习笔记二——进程

    Linux内核学习笔记二——进程   一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...

  6. 20135316王剑桥Linux内核学习笔记

    王剑桥Linux内核学习笔记 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计算机是如何工作的 个人理 ...

  7. Linux命令学习笔记目录

    Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 ...

  8. linux kernel学习笔记-5内存管理_转

    void * kmalloc(size_t size, gfp_t gfp_mask); kmalloc()第一个参数是要分配的块的大小,第一个参数为分配标志,用于控制kmalloc()的行为. km ...

  9. linux命令学习笔记(25):linux文件属性详解

    Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组. 最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loc ...

  10. 深挖计算机基础:趣谈Linux操作系统学习笔记

    参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...

随机推荐

  1. centos6.7安装openblas错误

    centos系统:CentOS release 6.7 (Final)安装OpenBLAS # Install OpenBLAS at /usr/local/openblas git clone ht ...

  2. C语言之scanf

    #include<stdio.h>int main(){int num;int a,b,c,result,d,result1;scanf("int%d",&nu ...

  3. Android智能下拉刷新加载框架—看这些就够了

    一些值得学习的几个下拉刷新上拉加载开源库 Android智能下拉刷新框架-SmartRefreshLayout 支持所有的 View(AbsListView.RecyclerView.WebView. ...

  4. ionic3中NavController类push setRoot相关问题解决

    今天在测试app的时候发现,登录页跳转到首页后,会加载两次数据.百思不得其解,查看了所有代码也没能发现问题.最终抱着尝试的态度,动了如下代码: if (suc) { //this.navCtrl.pu ...

  5. redis—操作基础

    内存数据库: 1.双击redis-server.exe =>启动2.双击redis-cli.exe =>打开管理控制台3.查看所有key keys *4.查看key类型 type myKe ...

  6. WebVR认识

    什么是WebVR WebVR是一种开放标准,可以在浏览器中体验VR,目标是让每个人都能轻松进入虚拟现实体验.

  7. [C#]使用Process的StandardInput与StandardOutput写入读取控制台数据

    本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 开发工具:VS2017 语言:C# DotNet版本:.Net FrameWork 4.0及以 ...

  8. Python函数篇(3)-内置函数、文件处理

    1.内置函数 上一篇文章中,我重点写了reduce.map.filter3个内置函数,在本篇章节中,会补充其他的一些常规内置函数,并重点写max,min函数,其他没有说明的函数,会在后面写到类和面向对 ...

  9. Date( )方法 章节中,你可以查看更多关于日期转换为字符串的函数

    在 Date 方法 章节中,你可以查看更多关于日期转换为字符串的函数: 方法 描述 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31). getDay() 从 Date 对象 ...

  10. IP协议和网络传输中的封装与分用。

    关于七层模型和四层模型可以参考这个:http://www.cnblogs.com/xcywt/p/5027277.html 因为四层模型用的比较多,这里只拿四层模型来分析. 1.四层模型中的最下层是链 ...