<<Linux 鸟哥的私房菜>>  心得 : 实践与观察才是王道
第0章 : 计算机概论
 计算机 : 接受用户输入的指令与数据,经过中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息。
 0.1.1 计算机硬件的五大单元 『 输入单元(鼠标,键盘等), CPU(算术逻辑,控制,记忆), 输出单元(屏幕,打印机等) 』
       CPU 为一个具有特定功能的芯片,里头含有微指令集。
       CPU 读取的数据都是从内存中读取来的,内存的数据是由输入单元传输进来的。CPU处理完毕的数据要写入内存,内存再到输出单元。
 0.1.3 接口设备 (只有cpu也无法运作计算机)
         主板(设备连接一起,让其协调,通信) - 
         存储设备(硬盘,软盘,光盘,磁带) - 硬盘最小物理量512bytes,最小的组成单位为扇区sector 
         显示设备 
         网络设备
 0.2 个人计算机的架构与设计
  x86开发商 (intel,AMD) 的cpu架构并不兼容,主板芯片组设计不相同。
   主板上最重要的就是芯片组,芯片组通常又分为两个桥接器来控制各组件的通信。
    北桥 : 负责连接较快的cpu,内存和显卡 等组件。 (AMD : 内存直接与cpu通信,不经过北桥)
    南桥 : 负责连接硬盘,USB,网卡等。
   北桥的总线称为系统总线,是内存传输的主要信道。
   与总线宽度类似,cpu每次能够处理的数据量称为字组大小(word size),字组大小依据cpu的设计而有32位与64位。
   0.2.3 显卡厂商直接在显卡上面嵌入一个3D加速的芯片,这就是GPU称谓的由来。
   0.2.6 CMOS是电脑主板上的一块可读写的RAM芯片。因为可读写的特性,
          所以在电脑主板上用来保存BIOS设置完电脑硬件参数后的数据,这个芯片仅仅是用来存放数据的。
           BIOS为写入到主板上某一块闪存或EEPROM的程序,在开机的时候运行,以加载CMOS当中的参数。
 0.3 软件是计算机的灵魂。
      机器程序与编译程序。 C/C++ ----编译器-----> 机器码
 0.4 操作系统 OS
      那如果我们能够将所有的硬件都驱动,并且提供一个开发软件的参考接口来给工程师开发软件的话,那就是OS。
     * OS 内核 『
        OS其实是一组程序,这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件。
        OS内核 -- 开机后常驻内存。
      』
    * 系统调用 System Call -- 开发软件,参考内核的相关功能。
     应用程序 -- 系统调用 -- OS内核 -- 硬件
   ** 内核功能 『
     1,系统调用接口
     2,程序管理
     3,内存管理
     4,文件系统管理
     5,设备驱动
    』
第 1 章 : Linux是什么
 GNU (Richard Mathew Stallman - 史托曼) 伟大的人物。
 GNU 通用公共许可证 GPL - General Public License
   * Emacs
   * GCC (GNU C Compiler )
   * GLIBC (GNU C Library)
   * Bash shell
  Linus Torvalds - Linux 参考 Minix(from 谭宁邦教授) 
  Linux 参考了POSIX规范(可携式操作系统接口),重点在于规范内核与应用程序之间的接口。
第 2 章 : Linux如何学习
 从头学习 Linux 基础
  1,计算机概论与硬件相关知识
  2,先从Linux的安装与命令学起
  3,Linux操作系统的基础技能
  4,务必学会vi文本编辑器
  5,Shell与Shell脚本的学习
  6,一定要会软件管理员
  7, 网络基础的建立
  8, 这样网站的架设对你来说太简单了。
  实践再实践 -- 要增加自己的体力,就只有运动;要增加自己的知识,就只有读书。
  http://linux.vbird.org/
   Netman兄弟的建议 『
     (1) 有系统的设计文件目录
     (2) 养成一个做记录的习惯
   』  后研 - Linux 文件计划的网站是 http://tldp.org/
   鸟哥的建议 『 (1)建议兴趣 (2)成就感 (被认可,被认同) 』
第 3 章 : Linux主机规划与磁盘分区
第 4 章 : 安装 CentOS 5.x 多重引导小技巧
第 5 章 : 首次登录与在线求助 man page
第 6 章 : Linux的文件权限与目录配置
 Linux : 多用户,多任务环境。
  owner, group, others 且 各有 read, write, execute 等权限。
  /etc/passwd   /etc/shadow   /etc/group
 6.2.1 文件属性
 *1 文件处理命令  [ ls, cp, mv, rm, cat, ln, file]  文件内容查阅  [ cat, more, less, head, tail]
 *2 权限管理命令  [ chmod  u+r g-w o=x 777,  chown [-R] robby filename, chgrp 组名 filename, umask -S]
 *3 文件搜索命令  [ which, find, locate, updatedb, grep ]which -a命令在哪里,whereis -b(数据库)locate 显示所有
 *5 压缩解压命令  [ gzip, gunzip, tar, zip, bzip2]
 *6 网络通信命令  [ write, wall, ping, ifconfig] 
 *4 帮助命令     [ man, info, whatis  apropos, help]
 *7 系统关机命令  
 *8 Shell应用技巧
  whereis 与 which [不同是可以看到命令所在帮助文档位置]
  修改文件时间或创建新文件命令 : touch
  drwxr-xr-x      2       hp      hp     4096    2012-12-25 16:18  dlinux
[文件类型与权限] [硬链接数] [所有者] [所属组] [文件容量]    [修改日期]      [文件名]

文件类型 d 目录directory  - 二进制文件  l 软链接文件link
    rwxr-x        r-x  
   所有者u      所属组g     其他人o
   user        group      others
   (所有者可以转让)
第五部分 {
   4096 - 文件大小 [不是很准确,标记目录本身的大小,不是目录总大小] 数据块(512字节1单位)
   组织管理数据的方式,每种OS都有自己的,比如 NTFS, ext3 ...
   存储数据的最小单位就叫做数据块,这一这样理解!!
   文件向。。。存储的时候,至少要占用一个数据块。  (你就 60斤,也得做一个椅子,200斤做一个,600斤可能做两个!)
   分你做什么,数据块越小存取速度越小,数据块越大存取的时候浪费空间越大。
   分你做什么,调数据块多大合适。。。有个别时候!!
  }
文件搜索命令 详解 『
 *2 find
 (1) 命令所在路径 : /usr/bin/find  语法:find [搜索路径] [搜寻关键字]
   范例:
   $ find /etc -name init*  在目录/etc中查找init开头的文件
   $ find / -size +204800  在根目录下查找大于100MB的文件 block=512B
                  大于 : +, 小于 : - , 等于 : 不写 +, -;
   $ find / -user sam      在根目录下查找所有者为sam的文件
   find 原则 - 尽量节省系统资源
 (2) *1*   天     ctime, atime, mtime
     *2*   分钟   cmin , amin,  mmin
   c-change 改变, 表示文件属性被修改过,所有者,所属组,权限
   a-access 访问
   m-modify 修改, 表示文件内容被修改过
   -之内, +超过
   find /etc -mmin -120   我们刚讲了 4 个find的选项,其实不下 40 个!要学会看文档!
 (3) 连接符  -a and 逻辑与 -o or 逻辑或
   $ find /etc -ctime -1   在/etc下查找24小时内被修改过属性的文件和目录
   $ find /etc -size +163840 -a -size -204800    在/etc下查找大于80MB小于100MB的文件
   $ find /etc -name init* -a -type f [ 二进制文件 ]
   $ find /etc -name init* -a -type l [ 软链接文件 ]
    -type 文件类型  f 二进制文件  l 软链接文件  d 目录
    连接符 find ..... -exec 命令 {} \;
                           {} find 查询的结果  \ 转义符 【ls \ls】
  $ find /etc -name inittab -exec ls -l {} \; 解释 : 在/etc下查找inittab文件并显示其详细信息
  $ find /test -name testfile3 -exec rm {} \;
  $ find /etc -name inittab -ok ls -l {} \;  能询问一下 -ok
  $ find /etc -name inittab -a -type f -exec ls -l {} \;
  $ find . -inum 16 -exec rm {} \;
 ------------------------------------------------------------------------------------------
 *3 locate [linux特有的 在文件数据库中查找 很快]
      语法:locate [搜索关键字]  功能描述:寻找文件或目录  范例: $ locate file  ** 列出所有跟file相关的文件
 *4 updatedb  执行权限:root  语法:updatedb  功能描述:建立整个系统目录文件的数据库  范例:# updatedb
 *5 grep  功能描述:在文件中搜寻字串匹配的行并输出  范例:# grep ftp /etc/services

帮助命令 {
 #1 man   man [会调用more] 
  范例: $ man ls  查看ls命令的帮助信息
  帮助分多种 :第一种是命令,第五种是配置文件
  man 5 passwd  man passwd  man 1 passwd
 #2 info [linux特有的,和 man 只是呈现形式略有差别]
  语法:info [任何关键字]   范例: $ info ls  查看ls指令的帮助信息
 #3 whatis  apropos
  指令所在路径:/usr/bin/whatis apropos   /usr/sbin/makewhatis
  执行权限: All User,   All User,   root
  语法: whatis apropos [任何关键字]
  功能描述: 获得索引的简短说明信息
  范例: $ whatis ls
       $ apropos fstab  相当于man -k
  帮助指令:whatis
  范例: #make whatis
  建立whatis和apropos搜索使用的数据库,当使用这两个命令发生错误时,就是whatis database没有建立
 #4 help [查看shell内置命令的帮助]
     硬件 - 内核 - shell
     man bash[一个内置命令就行] 告诉你当前 shell 有哪些内置命令
}
6.2.4 Linux 文件种类与扩展名
  1, (普通文件,纯文本文件(ASCII),二进制文件,数据格式文件)
  2, 目录
  3, 连接文件
  4, 设备与设备文件(b,c)   5, 套接字   6, 管道。
6.3 文件系统目录结构简介
/bin  : 基础系统所需要的最基础的命令就是放在这里。比如 ls、cp、mkdir等命令;
         功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。
/boot : Linux的内核及引导系统程序所需要的文件。
         启动装载文件存放位置,如kernels,initrd,grub。一般是一个独立的分区。
/dev  :  一些必要的设备,声卡、磁盘等。还有如 /dev/null. /dev/console /dev/zero /dev/full 等。
/etc  :  系统的配置文件存放地. 
/home :  用户工作目录,和个人配置文件,如个人环境变量等.
/lib  :  库文件存放地。bin和sbin需要的库文件。类似windows的DLL。
/media : 可拆卸的媒介挂载点,如CD-ROMs、移动硬盘、U盘,系统默认会挂载到这里来。
/mnt  : 临时挂载文件系统。比如有cdrom 等目录。
/opt  : 可选的应用程序包。 第三方软件
/proc : 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。
/root : Root用户的工作目录
/sbin : 和bin类似,是一些可执行文件,不过不是所有用户都需要的,一般是系统管理所需要使用得到的。
/tmp  : 系统的临时文件,一般系统重启不会被保存。
/usr  : 包含了系统用户工具和程序。
  /usr/bin : 非必须的普通用户可执行命令
  /usr/include : 标准头文件
  /usr/lib  : /usr/bin/ 和 /usr/sbin/的库文件
  /usr/sbin : 非必须的可执行文件
  /usr/src  : 内核源码
/srv : 该目录存放一些服务启动之后需要提取的数据
第 7 章 Linux 文件与目录管理
 处理目录命令 : cd, pwd, mkdir, rmdir(删除空目录). bash shell(具有文件补齐tab)
 关于执行文件路径的变量 : $PATH
  hp@ubuntu:~$ echo $PATH  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
 7.4.3 文件特殊权限 : SUID, SGID, SBIT
   hp@ubuntu:~/2014$ ls -ld /tmp
   drwxrwxrwt 12 root root 4096  9月 30 21:39 /tmp
   hp@ubuntu:~/2014$ ls -ld /usr/bin/passwd
   -rwsr-xr-x 1 root root 42824  2月 11  2012 /usr/bin/passwd
   s 与 t 这两个权限与系统的帐号以及系统的进程较为相关。以后再研究。
第 8 章 Linux 磁盘与文件系统管理
第 9 章 文件与文件系统的压缩与打包
第 10 章 vim 程序编辑器
第 11 章 认识与学习bash
 Linux bash东西非常多,包括变量的设置与使用,bash操作环境的搭建,数据流重定向功能,还有那好用的管道命令。
 11.1.1 硬件, 内核 与 shell
   1, 硬件   2,内核程序   3,应用程序
   man, chmod, chown, vi, fdisk, mkfs等命令,这些命令都是独立的应用程序。
 11.1.2 shell 
        /etc/shells    /etc/paswd
 11.1.4 bash shell 的功能
  bash的主要优点 : 『
   (1) 命令记忆功能 (history)  .bash_history (注销系统后,命令记忆会记录到.bash_history)
   (2) 命令与文件补全功能 (tab)
   (3) 命令别名设置功能 (alias) alias lm='ls -al'
   (4) 作业控制,前台,后台控制 (job control, foreground, background)
   (5) 程序脚本 (shell script)
   (6) 通配符 (Wildcard)
  』
 11.1.5 bash shell的内置命令 : type
  # type [-tpa] name
 11.1.6 命令的执行  "/Enter" 转义
 11.2 shell 变量 
      echo 变量显示  如 : echo ${PATH}
      父子进程 export 设置成环境变量..
      unset 取消变量的设置值。 uname -r 显示内核版本
      "version=$(uname -r)" 来替代 "version=`uname -r`" 比较好。
 11.2.3 环境变量的功能
   env 与 export 查看环境变量
   HOME, SHELL, HISTSIZE, PATH, LANG(语系数据), RANDOM(随机数发生器)
   export 自定义变量转成环境变量 export name
   子进程会定义父进程的环境变量,不会继承父进程的自定义变量
 11.2.5 变量的有效范围     基本上这样 『 环境变量=全局变量  自定义变量=局部变量』
 11.2.6 变量键盘读取,数组与声明: read, array, declare
    read -p "your name : " -t 30 named
    declare / typeset
    declare [-aixr] variable   数组,整数,环境变量,只读  declare +x sum(+可取消操作)
   hp@ubuntu:~/2014$ declare -i sum=1+3+5
   hp@ubuntu:~/2014$ echo $sum
hp@ubuntu:~/2014$ declare -ia var
hp@ubuntu:~/2014$ var[0]=3
hp@ubuntu:~/2014$ var[1]=4
hp@ubuntu:~/2014$ echo "${var[1]}, ${var[0]}"
4, 3
hp@ubuntu:~/2014$ var[2]=var[0]+var[1]
hp@ubuntu:~/2014$ echo "${var[1]}, ${var[2]}"
4, 7
 11.2.7 与文件系统及程序的限制关系 : ulimit
    bash 可以限制用户的某些系统资源,可打开的文件数量,可使用的CPU时间,可使用的内存总量等。
    ulimit -H -S -a -c -f -d -l -t -u -s 等。
 11.2.8 变量内容的删除,替代与替换
   #echo ${path/sbin/SBIN}
   ${变量#关键字}  ${变量##关键字}
   ${变量%关键字}  ${变量%%关键字}
   ${变量/旧字符串/新字符串}  ${变量//旧字符串/新字符串}  ...
 11.5 数据流重定向
   1, stdin  代码为 0 ,使用 < 或 <<
   2, stdout 代码为 1 ,使用 > 或 >>
   3, stderr 代码为 2 ,使用 2> 或 2>>
   /dev/null 垃圾桶黑洞设备
   && 与 ||
   cut 命令 例子 : echo $PATH | cut -d ':' -f 3,5
   export | cut -c 12-
   cut 的主要用途在于将同一行里面的数据进行分解,用于分析一些日志。
   grep -a -c -i -n -v 'targe' filename
 11.6.2 排序命令: sort, wc, uniq
 last | cut -d ' ' -f 1 | sort | uniq -c
 hp@ubuntu:~$ last | tee last.list | cut -d " " -f1
 tee 命令可以让 standard output 转存到一个文件内,并将同样的数据继续送到屏幕中去处理
 11.6.4 字符转换命令  :  tr, col, join, paste, expand
   (1) tr :  last | tr '[a-z]' '[A-Z]'
             cat /etc/passwd | tr -d ':'
   (2) col -x 将tab键转换成对等的空格  -b 在文字内有 / 时,仅保留 / 后面接的那个字符
       例子 : cat /etc/man.config | col -x | cat -A | more
   (3) join [-ti12] file1 file2 
hp@ubuntu:~$ join -t ':' /etc/passwd /etc/group
root:x:0:0:root:/root:/bin/bash:x:0:
daemon:x:1:1:daemon:/usr/sbin:/bin/sh:x:1:
bin:x:2:2:bin:/bin:/bin/sh:x:2:
-------------------------------------------------------
hp@ubuntu:~$ head -n 3 /etc/passwd /etc/group
==> /etc/passwd <==
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh

==> /etc/group <==
root:x:0:
daemon:x:1:
bin:x:2:
   (4) paste [-d] file1 file2
       -d : 后面可以接分隔字符,默认是以 [tab] 来分隔的。
       -  : 如果file部分写成 -, 代表来自 standard input 的数据的意思。
   (5) expand 就是将 [tab] 按键转成空格键,可以这样做 : expand [-t] file
       expand -t 6 - | cat -A
       unexpand
 11.6.5 切割命令 : split  参数 -b : 后面可接欲切割成的文件大小,可加单位 b, k, m 等;
 $ split -b 300k  /etc/termcap termcap
 $ ll -k termcap*
 $ cat termcap* >> termcapback
 $ ls -al / | split -l 10 - lsroot
 $ wc -l lsroot*
 11.6.6 参数代换: xargs 可以读入stdin的数据,并且以空格符或断行字符进行分辨,将stdin的数据分隔成args
   hp@ubuntu:~$ cut -d ':' -f1 /etc/passwd | head -n 3 | xargs -p
   /bin/echo root daemon bin ?...y
   root daemon bin
   hp@ubuntu:~$ echo "3  4:asd" | xargs 
   3 4:asd
 11.6.7 关于减号 - 的用途
  $ tar -cvf - /home | tar -xvf - 
   某些命令需要用到文件名来处理,该stdin, stdout可以利用减号“-”来替代。
  tar  语法:tar 选项[cvf] [目录]  
   -c 产生.tar打包文件   -v 显示详细信息 [nby]  
   -f 指定压缩后的文件名 [by]  -z 打包同时压缩  
   功能描述:打包目录, 把一个目录打包成一个文件  
   压缩后文件格式 : .tar.gz  tar -zcvf newdir.tar.gz newdir [这样用法并不是所有unix都支持y+d]   
  tar命令解压缩语法:  
   -x 解包.tar文件  -v 显示详细信息  -f 指定解压文件  -z 解压缩  
  范例:$ tar -zxvf dir1.tar.gz   
 #4 zip  [默认win和linux的通用格式] [会保留源文件]  
  语法: zip 选项[-r] [压缩后文件名称] [文件或目录]  
   -r 压缩目录  
   功能描述:压缩文件或目录  
   压缩后文件格式:.zip  
   范例 :  
   $ zip services.zip /etc/services  压缩文件  
   $ zip -r test.zip /test  压缩目录  
   unzip  
   功能描述:解压.zip的压缩文件  
   范例:$ unzip test.zip  
《Linux 四》 VIM
 *1,[插入命令]  a, A, i, I, o, O
 *2,[定位命令]  h, j, k, l, $, 0, H, M, L  
    :set nu   设置行号  :setnonu  取消行号
    gg 到第一行 G  到最后一行  nG 到第n行  :n 到第n行
 *3,[删除命令]   x, nx, dd, ndd, dG[光标处删除到文件尾], D, :n1, n2d[删除指定范围的行]
 *4,[复制和剪切命令]  yy, Y, nyy, nY
  yy, Y 复制当前行   nyy, nY 复制当前行一下n行
  dd[剪切], ndd[剪切n行], p, P [粘贴在当前光标所在行下或行上]
 *5,[替换和取消命令] r, R, u
  r 取代光标所在处字符  R 从光标所在处开始替换字符,按Esc结束  u 取消上一步操作
 *6,[搜索和替换命令]
  /string 按 n  是下一个  从前向后, N 从后向前
  :%s/old/new/g  全文替换指定字符串  :n1,n2s/old/new/g 在一定范围内替换!  :n1,n2s/old/new/c 询问替换 
  :set ic 搜索的时候就不区分大小写了!  :set noic
 *7,[保存和退出命令]    [ZZ 最常用 ]   w filename 另存为指定文件
   :wq! 强行保存退出 , 只有文件所有者或者是管理员root 才可以这么干
 *8,[vi 中另外比较有趣的命令]  :r !命令  导入命令执行结果到当前vi中   在vi中执行命令 :!命令
 *9, 分屏 sp, vsp (水平)  ctrl+w *2
  定义快捷键 :map 快捷键 触发命令  范例: : map ^P I#<ESC>  ^P = ctrl+v+p  : map ^B 0x
  连续行注释  :n1,n2s/^/#/g  连续行加 # 注释
            :n1,n2s/^#//g   行首的 # 号去掉! ^代表行首
            :n1,n2s/^/\/\//g  在行首加入 //
         :4,8/#//g    在4~8行,将#号替换为空,就是去掉#
 *10, vi 的配置文件  ~/.vimrc
《Linux 五》 引导流程
 *1 Linux引导流程  *2 Linux运行级别  *3 Linux启动服务管理  *4 GRUB配置与应用
系统引导流程 『
 固件 firmware(CMOS/BIOS) → POST 加电自检
                 ↓             [CMOS是固化在主板上的那段程序, BIOS 操作CMOS的那个界面]
 自举程序 BootLoader(GRUB) → 载入内核  linux-grub /etc/grub.conf / win-ntldr [nt内核代号,loader] bootini [里面记载了启动信息]
                 ↓        载入内核,OS的核心-内核[存储CPU文件进程...管理]-心脏大脑  指定linux内核存放的位置。ls /boot
 载入内核 Kernel → 驱动硬件
                 ↓         [内核只做两件事情,1驱动硬件2启动init. 内核保存最多的是驱动程序]
 启动进程 init
                 ↓         [init是第一个可以存在和启动的进程]
 读取执行配置文件/etc/inittab
 ----------------
 说明1 : firmware自检之后,发现硬件们都没有什么问题之后,然后firmware读取MBR[主引导记录],位于0柱面0磁头1扇区,
           跳到Master boot record去读取数据。载入MBR中一个很重要的数据叫做Bootloader,也称做自举程序或自启动程序
           下面是 Partition table 磁盘分区表,下面是 Magic Number 结束标志字
 说明2 : Linux内核是一个源代码文件,解包之后发现是一堆源代码文件,Linux没有编译的内核。自己下载你可以编译升级内核。
 说明3 :init启动后读取inittab文件,执行缺省运行级别,从而继续引导过程。在UNIX系统中,init时第一个可
         以存在的进程,它的PID恒为1,但它也必须向一个更高级的功能负责:PID为0的内核调度器(Kernelscheduler),从而获得CPU时间。
         扩展 :
              在Linux里面不允许存在 孤儿进程,在linux系统中init是所有进程的父进程。
              僵尸进程[Z]  儿子死了,父亲不知道,这个子进程就会变成 Z。
 说明4, 相关Apache服务的文件 .conf, config的缩写。 有的叫做~tab. table缩写。
         inittab [ubuntu下没有,但是貌似可以自己创建一个!]
         windows按F8,类似 runlevel [2,3 NFS网络文件系统 sun开发的一个服务,可以实现 unix和unix的文件共享,不好udp..]
         0 关机 1 字符单用户 2,3字符界面的多用户模式[广泛使用的服务器的模式] 4 自定义 5 图形化的多用户 6 reboot
《Linux 七》 进程管理
     课程大纲 :  进程的概念  进程管理命令  计划任务
进程和程序的区别
 1、程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程, 它是动态概念,有一定的生命期,是动态产生和消亡的。
父进程与子进程
 1、子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程。
 2、在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。
 3、父进程终止子进程自然终止。
前台进程和后台进程
 前台进程:
  在Shell提示处打入命令后,创建一个子进程,运行命令,Shell等待命令退出,然后返回到对用户给出提示
  符。这条命令与Shell异步运行,即在前台运行,用户在它完成之前不能执行另一个命令。
 后台进程:  【很好】
  在Shell提示处打入命令,若后随一个&,Shell创建的子进程运行此命令,但不等待命令退出,而直接返回到对
  用户给出提示。这条命令与Shell同步运行,即在后台运行。后台进程必须是非交互式的。
进程状态
 就绪: 进程已经分配到资源,但因为其它进程正占用CPU。
 等待: 因等待某种事件而暂时不能运行的状态。
 运行: 进程分配到CPU,正在处理器上运行。
进程状态细化
 用户态运行 : 在CPU上执行用户代码
 核心态运行 : 在CPU上执行核心代码
 在内存就绪 : 具备运行条件,只等调度程序为它分配CPU
 在内存睡眠 : 因等待某一事件的发生,而在内存中排队等待
 在外存就绪 : 就绪进程被交换到外存上继续处于就绪状态
 在外存睡眠 : 睡眠进程被交换到外存上继续等待
 在内存暂停 : 因调用stop程序而进入跟踪暂停状态,等待其父进程发送命令。
 在外存暂停 : 处于跟踪暂停态的进程被交换到外存上
 创建态 : 新进程正在被创建、但尚未完毕的中间状态
 终止态 : 进程终止自己
查看用户信息 w (命令)
 w 显示信息的含义
 JCPU : 以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里
 PCPU : CPU执行程序耗费的时间
 WHAT : 用户正在执行的操作查看个别用户信息:w 用户名
 load average: 分别显示系统在过去1、5、15分钟内的平均负载程度。
 FROM: 显示用户从何处登录系统,“:0”的显示代表该用户时从X Window下,打开文本模式窗口登录的
 IDLE: 用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会被重置
hp@ubuntu:~$ w
 22:02:45 up 22 min,  2 users,  load average: 0.27, 0.27, 0.28
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
hp       tty7                      21:40    22:33   1:16   0.34s gnome-session -
hp       pts/0    :0               22:02    0.00s   0.37s  0.01s w
查看系统中的进程 ps 常用选项
 a : 显示所有用户的进程
 u : 显示用户名和启动时间
 x : 显示没有控制终端的进程
 e : 显示所有进程,包括没有控制终端的进程
 l : 长格式显示
 w : 宽行显示,可以使用多个w进行加宽显示
ps常用输出信息的含义
 TIME:进程自从启动以来启用CPU的总时间
 COMMAND/CMD:进程的命令名
 USER:用户名
 %CPU:占用CPU时间和总时间的百分比
 %MEM:占用内存与系统内存总量的百分比
ps应用实例
 # ps 查看隶属于自己的进程
 # ps -u or -l 查看隶属于自己进程详细信息
 # ps -le or -aux 查看所有用户执行的进程的详细信息
 # ps -aux --sort pid 可按进程执行的时间、
    PID、UID等对进程进行排序
ps应用实例
 # ps -aux | grep sam
 # ps -uU sam 查看系统中指定用户执行的进程
 # ps -le | grep init 查看指定进程信息
 # pstree
kill – 杀死进程
 *1 为什么要杀死进程
 *2 该进程占用了过多的CPU时间
 *3 该进程缩住了一个终端,使其他前台进程无法运行
 *4 运行时间过长,但没有预期效果
 *5 产生了过多到屏幕或磁盘文件的输出
 *6 无法正常退出
关闭进程:kill 进程号
 *1 kill -9 进程号(强行关闭)  kill -s 9 进程号 [前简化]  
 *2 kill -1 进程号(重启进程)
 *3 关闭图形程序:xkill
 *4 结束所有进程:killall
 *5 查找服务进程号:pgrep 服务名称
 *6 关闭进程:pkill 进程名称
 启动程序 stop , 也可以关闭
 /etc/rc.d/init.d/httpd restart
--------------------------------
# cat/proc/cpuinfo
# pgrep httpd 检测但它所有进程的 pid
# pkill httpd 也可以关闭,很方便
nice和renice
 nice
  指定程序的运行优先级
  格式:nice -n command
  例如:nice -5 myprogram
 renice
  改变一个正在运行的进程的优先级
  格式:renice n pid
  例如:renice -5 777
 *优先级取值范围为(-20,19)*
nohup
 使进程在用户退出登陆后仍旧继续执行,nohup命令将执行后的数据信息和
 错误信息默认储存到文件nohup.out中
 格式: nohup program &
*进程的挂起和恢复*
 进程的中止(挂起)和终止
   挂起(Ctrl+Z)[类似差不多暂停]   终止(Ctrl+C)
 进程的恢复
   恢复到前台继续运行(fg)   复到后台继续运行(bg)   查看被挂起 /后台的进程(jobs)
top 作用:进程状态显示和进程控制,每5秒钟自动刷新一次(动态显示)
 常用选项:
  d : 指定刷新的时间间隔
  c : 显示整个命令行而不仅仅显示命令名
 top常用命令:
  u : 查看指定用户的进程
  k : 终止执行中的进程
  h or ?:获得帮助
  r : 重新设置进程优先级
  s : 改变刷新的时间间隔
  W : 将当前设置写入~/.toprc文件中
计划任务
 #1 为什么要设置计划任务
 #2 计划任务的命令
      *1 at 安排作业在某一时刻执行一次
      *2 batch 安排作业在系统负载不重时执行一次
      *3 cron 安排周期性运行的作业
at命令的功能和格式
  功能:安排一个或多个命令在指定的时间运行一次
  at的命令格式及参数
   at [-f 文件名] 时间 / at -d or atrm  删除队列中的任务 / at -l or atq 查看队列中的任务
进程处理方式
 standalone 独立运行  xinetd 进程托管  atd、crond 计划任务
《Linux 八》 文件系统管理  
 *文件系统构成及命令
 *硬盘分区及管理
文件系统构成 『
 *1 /usr/bin、/bin :  存放所有用户可以执行的命令
 *2 /usr/sbin、/sbin : 存放只有root可以执行的命令
 *3 /home : 用户缺省宿主目录
 *4 /proc : 虚拟文件系统,存放当前进程信息 [保存在内存镜像中的]
 *5 /dev : 存放设备文件
 *6 /lib : 存放系统程序运行所需的共享库
 *7 /lost+found : 存放一些系统出错的检查结果
 *8 /tmp : 存放临时文件
 *9 /etc : 系统配置文件 [最重要的目录之一]
 *10 /var : 包含经常发生变动的文件,如邮件、日志文件、计划任务等
 *11 /usr : 存放所有命令、库、手册页等 [有点像 c:\windows]
 *12 /boot : 内核文件及自举程序文件保存位置
 *13 /mnt : 临时文件系统的安装点  mount
hp@ubuntu:/$ df -m
文件系统        1M-块  已用  可用 已用% 挂载点
/dev/loop0      14692  4746  9210   35% /
udev             2977     1  2977    1% /dev
tmpfs            1195     1  1194    1% /run
none                5     1     5    1% /run/lock
none             2986     1  2985    1% /run/shm
/dev/sda8       20490 17188  3303   84% /host
/dev/sda7      105036 24898 80139   24% /media/Studty
hp@ubuntu:/$ du -h /etc/services
20K    /etc/services
hp@ubuntu:/$ du -sh ~/dlinux
76K    /home/hp/dlinux
hp@ubuntu:/$ file /etc/services
/etc/services: ASCII English text
特殊权限:粘着位t
 *1 粘着位的定义:当权限为777的目录被授予粘着位,用户只能在此目录下删除自己是所有者的文件。
常用命令
   *1 查看分区使用情况:df
   *2 查看文件、目录大小:du
   *3 查看文件详细时间参数:stat
   *4 校验文件md5值:md5sum
   *5 检测修复文件系统:fsck、e2fsck
    (单用户模式卸载文件系统后执行)
hp@ubuntu:/$ df -h
 文件系统        容量  已用  可用 已用% 挂载点
 /dev/loop0       15G  4.7G  9.0G   35% /
 udev            3.0G  4.0K  3.0G    1% /dev
 tmpfs           1.2G 1000K  1.2G    1% /run
 none            5.0M  4.0K  5.0M    1% /run/lock
 none            3.0G  804K  3.0G    1% /run/shm
 /dev/sda8        21G   17G  3.3G   84% /host
 /dev/sda7       103G   25G   79G   24% /media/Studty
添加硬盘分区
   *1 划分分区(fdisk)   *2 创建文件系统 (mkfs)
   *3 尝试挂载 (mount) [mount 物理设备名 挂载点(空目录)]
   *4 写入配置文件 (/etc/fstab)
Linux 书架   
 入门类 :《鸟哥的Linux私房菜》,《Unix Power Tools》《Linux+ Study Guide》Linux+认证考试准备 
 编程类 :《Advanced Linux Programming》-> 《Advanced Programming in the UNIX Environment》
 内核类 :《Linux Kernel Development》
 工具类 :《Handbook of Open Source Tools》

转载于:https://www.cnblogs.com/robbychan/p/3786919.html

鸟哥的Linux 私房菜 (1-12) + my相关推荐

  1. 鸟哥的linux私房菜-文件压缩于打包-2

    dump 备份命令: -S  :仅列出后面的待备份数据需要多少磁碟空间才能够备份完毕: -u  :将这次dump 的时间记录到/etc/dumpdates 文件中: -v  :将dump 的文件过程显 ...

  2. 鸟哥的Linux私房菜(基础学习,服务器架设)

    纪念下吧:2014年大连的第一场雪,12月1号,早上出门就看见漫天飘着雪花,其实,还是很漂亮的! 自学过Linux的同学应该对<鸟哥的Linux私房菜>不会陌生,鸟哥分成两个部分来写,第一 ...

  3. 开发日记-20190612 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》

    Preface 今天效率真的感觉还不错呢= =,读书进度一口气推进了两章半,说真的,感觉现在看的东西大多数都是讲怎么用的,写这些其实意义不是很大,而且一般写下来后我后续也不会特地来回顾.所以我决定了, ...

  4. 鸟哥的linux私房菜-基础学习篇 读书笔记

    从事linux工作一年多,算是能够熟练运用linux服务器,但仍觉得自己对Linux的原理,理论缺乏空洞,潜下心来认真阅读尘封的鸟哥经典,知识点很全,收获颇多,实践与知识结合,知行合一,对linux开 ...

  5. chmod 777 什么意思:鸟哥的linux私房菜第六章学习笔记

    鸟哥的linux私房菜基础学习篇:心血来潮决定看一下这本书,虽然都是讲很基础的东西,但是,绝对不是浪费时间,比如我看完了之后就终于明白了chmod777是什么意思了. 写这个读书笔记也主要是想记录一些 ...

  6. 《鸟哥的Linux私房菜》Chapter11 20180726~20180806

    目录 1.认识Bash这个shell 1.1.硬件.核心与shell 1.2.系统的合法shell和/etc/shells功能 1.3.Bash shell的功能 1.3.1.命令修编功能 1.3.2 ...

  7. 鸟哥的Linux私房菜学习心得-基础操作

    <鸟哥的Linux私房菜>特别适合新手作为Linux的入门教材,即使没有计算机知识基础也能学明白,鸟哥算是很用心了.半个月来学习了鸟哥主页教程的基础篇,感觉良好,因此特意写下学习的感受,以 ...

  8. 鸟哥的Linux私房菜视频!

    本文转载于一牛网LINUX论坛,需要下载视频的请点击:http://bbs.16rd.com/thread-29646-1-1.html 说到Linux,估计有很多同学都有听过并且跃跃欲试地想学习一下 ...

  9. 《鸟哥的Linux私房菜》学习笔记

    <鸟哥的Linux私房菜>学习笔记 这是一份学习<鸟哥的Linux私房菜>的学习笔记,记笔记的原则是,感觉平时可能会用到的 就记录的详细一些,感觉暂时用不上的,只需要知道要解决 ...

最新文章

  1. 年度重磅发布:《人工智能发展报告2020》
  2. 【知识总结】Java类初始化顺序说明
  3. conda init 关闭和重启shell_Linux的/etc/init.d详解
  4. Linux shell if判断=左右必须要有空格
  5. scala 函数中嵌套函数_如何在Scala中将函数转换为部分函数?
  6. FaceDetector(人脸识别)
  7. Kubernetes - - k8s - v1.12.3 Helm持久化部署Harbor集成OpenLDAP登录
  8. [No0000EB]C# 数组(Array)
  9. QPCore Service与NetAssist冲突解决
  10. 初中计算机知识ppt,初中信息技术操作考试系统题库PowerPoint部分
  11. VARCHART XGantt开发者许可证
  12. ZigBee 集中式网络与分布式网络
  13. 《Rework》摘录及感想
  14. 2019最新activiti6.0工作流搭建平台
  15. Android 11 正式发布:更方便的操作和更安全的隐私
  16. 惠普CEO李艾科的“金刚钻儿”
  17. java integer long 转换_long(Long)与int(Integer)之间的转换
  18. C语言:链表实现二进制数加1运算
  19. 仿淘宝关闭二维码案例
  20. iPhone开发之SQLite 实现中文排序的教程

热门文章

  1. ffmypeg 视频处理类库使用方法
  2. FFmpeg入门详解之43:FFmpeg解封装的原理与实战
  3. 程序员进阶神器,ProcessOn绘制时序图
  4. 硬纪元干货|视+AR联合创始人涂意:AR将是下一代计算平台
  5. 8051单片机Proteus仿真与开发实例-光敏电阻+ADC0804仿真
  6. Sun Solaris系统管理命令简介
  7. 银河系创投徐芳:专注B2B这片热土,燃起产业新势能
  8. 人体捕捉:《SMPL-X》
  9. 解决前端工程师与UI设计协同工作的问题
  10. R语言也可以进行ATAC数据的完整分析啦!