读书笔记之《Ubuntu Linux操作系统》

2018-12-25  本文已影响4人  046ef6b0df68

文|Seraph

一、Ubuntu安装与基本使用

  1. Linux是一种起源于UNIX,以可移植操作系统接口(Portable Operating System Interface, POSIX)标准为框架发展起来的开放源代码的操作系统。
  2. GNU是“GNU‘s Not UNIX”的递归缩写,其含义是开发出一套与UNIX相似而不是UNIX的系统。
  3. GNU包含以下三个协议条款:
  1. Windows系列操作系统采用为内核体系结构,模块化设计,将对象分为用户模式层和内核模式层。
    Linux操作系统是采用但内核模式的操作系统,内核代码结构紧凑,执行速度快。
  2. linux内核版本
    [主版本].[次版本].[修改版本]-[附版本]
    次版本表示内核类型,偶数说明稳定的产品版本,奇数说明是开发中的实验版本。
  3. Window系统一般磁盘从C开始分配,因为A和B表示软盘。
  4. 初次使用Ubuntu系统,如果要使用root用户,需要使用sudo passwd root给root添加密码。
  5. 如软件安装包下载失败,可以在软件和更新中变更软件源。

二、图形界面与命令行

  1. Linux图形架构


    Linux图形架构
  2. Ctrl+Alt+T打开仿真终端窗口
  3. Ctrl+Alt+Fn切换控制台界面,linux系统允许用户同时打开6个虚拟控制台(tty1~tty6)。
  4. Shell是用户和系统交互的接口
    Ubuntu默认使用的Shell程序是bash
  5. 正则表达式
符号 含义
* 表示任何字符串
? 表示任何单个字符
[] 表示一个字符序列
! 在[]中使用!表示排除其中任意字符
^ 只在一行的开头匹配字符串
$ 只在行尾匹配字符串
符号 含义
* 匹配任意多个模式
+ 匹配1个或多个模式
? 匹配模式表中任何一个模式
@ 仅匹配模式表中一个给定模式
! 除了给定模式表中的一个模式之外,它可以匹配其他任何字符串
  1. Shell中的特殊字符
  1. 环境变量
环境变量 含义
PATH 可执行命令的搜索路径
HOME 用户主目录
LOGNAME 当前用户的登录名
HOSTNAME 主机名
PSI 当前命令提示符
SHELL 用户当前的Shell
  1. 一个命令行中使用多个命令,用隔开;
    \表示命令行持续到下一行。
  2. Ctral+D结束输入符
    Ctrl+C强制中断

三、用户与组管理

  1. Ubuntu初始使用时,root没有密码的,所以不能使用su root切换,但是可以使用sudo su root命令。
  2. UID,root账户的UID为0,系统账户的UID的范围为1~499,还包括65534,常规用户的UID默认从1000开始顺序编号。
  3. GID,root组的GID为0,系统组的GID的范围为1~499,自定义组由管理员创建,GID默认从1000开始。
  4. 一个用户可以同时属于多个组,其中某个组为该用户的主要组,其他组为该用户的次要组。
  5. Linux用户账户的其相关信息(除密码外)均存放在/etc/passwd配置文件中
    每条信息格式含义如下:
    账户名:密码:UID:GID:注释:主目录:Shell
    如果要禁用某个账户,可以在passwd文件中该账户记录行前加*
  6. 账户密码信息保存在/etc/shadow中,且密码都是由MD5加密后保存的。
    每条密码信息格式含义如下:
    账户名:密码:最近一次修改:最短有效期:最长有效期:过期前警告器:过期日期:禁用:保留用于未来扩展
    日期格式从1970年1月1日到修改日期的天数。
  7. 组账户配置文件/etc/group
    信息格式如下:
    组名:组密码:GID:组成员列表
    该文件中,用户的主要组不会将该用户自己作为成员列出。
  8. 组密码配置文件/etc/gshadow
    信息格式如下:
    组名:加密后的组密码:组管理员:组成员列表
  9. 安装“用户与组”管理命令
    sudo apt install gnome-system-tools
  10. 文本分析工具awk
    如下命令可以列举出passwd文件中所有用户
    awk -F':' '{print $1}' /etc/passwd
  11. 添加用户账户useradd
    用法格式:
    useradd [选项] <用户名>
    对于没有指定选项的情况,系统将根据/etc/default/useradd配置文件中的定义为新建用户账户提供默认值。
    -D选项用于显示默认的useradd配置。
    相似命令:adduser
  12. 管理用户账户密码passwd
    用法格式:
    passwd [选项] <用户名>
  13. 修改用户账户usermod
    用法格式:
    usermod [选项] <用户名>
  14. 更该用户的个人信息chfn
    用法格式:
    chfn [选项] <用户名>
  15. 删除用户userdel
    用法格式:
    userdel [-r] <用户名>
    如果选择-r,则在删除该账户的同时,一并删除该账户对应的主目录和邮件目录。
    相似命令:deluser
  16. 创建组账户命令groupadd
    用法格式:
    groupadd [选项] <组名>
    相似命令:addgroup
  17. 修改组账户命令groupmod
  18. 删除组账户命令groupdel
    相似命令:delgroup
  19. 显示某用户所属的全部组命令groups
    如果没有指定用户,则显示当前用户。
  20. 向组中添加或删除用户命令gpasswd
    相似命令:adduser deluser
  21. 查看用户信息命令id
  22. 查看的登录用户命令who
  23. 查看系统的历史登录情况命令last

四、文件与目录管理

  1. 特殊目录符号
符号 含义
. 或 ./ 当前目录
.. 或 ../ 上一层目录
~ 当前用户的主目录
  1. FHS(Filesystem Hierarchy Standard)规范
目录 存放内容
/bin 存放用于系统管理维护的常用实用命令文件
/boot 存放用于系统启动的内核文件和引导装载程序文件
/dev 存放设备文件
/etc 存放系统配置文件
/home 各个用户的主目录
/lib 存放动态连接共享库
/media 为光盘软盘等设备提供的默认挂载点
/mnt 为某设备提供的默认挂载点
/root root用户主目录
/proc 系统自动产生的映射文件
/sbin 存放系统管理员或者root用户使用的命令文件
/usr 存放应用程序和文件
/var 保持经常变化的内容,如系统日志、打印
  1. 文件结构:索引节点(包含文件权限/所有者/大小等信息)+数据
  2. 文件类型:普通文件、目录文件、设备文件、链接文件
  1. Linux将文件访问者身份分为:所有者(owner)、所属组(group)、其他用户(others)。
    文件访问权限:读(read)、写(write)、执行(execute)。
  2. ls -l执行后文件信息格式如下
    rwxr-xr-x 2 liushupeng liushupeng 4096 Dec 28 2018 Videos
    文件权限 链接 所有者 所属组 容量 修改日期 文件名
    第一列的文件权限含义:
    字符1:文件类型(d表示目录,-表示文件,l表示链接文件,b表示块设备文件,c表示字符设备文件)
    字符2~4:所有者权限(r表示读,w表示写,x表示执行)
    字符5~7:所属组权限
    字符8~10:其他用户的权限
  3. 文件权限数字表示法:r(4) w(2) x(1)
  4. umask命令查询默认文件访问权限掩码

五、磁盘存储管理

  1. MBR分区格式,一个磁盘最多4个主分区,最多16个分区(全分成逻辑分区的情况下)
  2. GPT分区格式,磁盘最多可以创建128个主分区
  3. 扩展分区下的逻辑分区从5开始命名
  4. Linux分区作用:比如/boot分区,单独给他挂载分区的话,当根分区出了问题,linux也依然能启动
  5. swap一般建议为物理内存的2~2.5倍
  6. 磁盘管理工具:fdisk、parted
  7. 创建文件系统命令:mkfs
  8. 查询文件系统的UUID命令:blkid
  9. 设置和清除文件系统的UUID命令:tune2fs
  10. 目录挂载命令:mount
  11. 查询磁盘占用情况命令:df
  12. 查询文件和目录的磁盘使用情况命令:du
  13. 磁盘分区工具:Gparted
  14. 备份和恢复命令:dump、restore
  15. 光盘刻录:cdrecord
  16. 镜像生成:mkisofs

六、软件包管理

  1. 常见的软件包格式:
    RPM(RedHat Package Manager),已成为目前Linux各发行版中应用最广泛的软件包格式,使用rpm工具来管理;
    Deb(Debian packager),是Debian和Ubuntu系列发行版本使用的软件包格式,使用dpkg命令进行管理。
    使用这两种包管理都需要自己考虑软件包依赖性

  2. 高级软件包管理工具:
    Yum(Yellow dog Updater, Modified)是基于RPM包的软件包管理;
    APT(Advanced Packaging Tools是Debian及派生发行版的软件包管理器。
    使用这两种高级软件包管理器,可以自动处理依赖性关系。但如果安装过程中由于兼容问题、安装源等问题停止,则需要用户自己来解决软件依赖问题。

  3. PPA(Personal Package Archive)是个人软件包档案,Ubuntu官方仓库收录的软件比较正式,版本也就相对滞后,PPA则可以第一时间体验到最新版本软件。
    PPA维护网站地址launchpad.net
    添加PPA源命令:add-apt-repository ppa:user/ppa-name
    删除PPA源命令: add-apt-repository -r ppa:user/ppa-name
    添加PPA源后记得更新软件更新列表,再安装。

  4. Ubuntu的 /var/lib/apt/lists目录存放的是已经下载的各软件源的元数据;
    var/lib/dpkg/states目录存放的是Ubuntu软件中心和APT安装和卸载软件的信息。
    软件更新器通过比较这两个目录信息来判断是否更新。

  5. apt-cache 查询软件包
    apt-cache pkgnames列出当前所有可用的软件包
    apt-cache search xxx搜索包含xxx名字的所有软件
    apt-cache show 软件包名查看指定名称的软件包的详情
    apt-cache depends 软件包名查看软件包所依赖的软件包
    atp-cache rdepends 软件包名查看软件包被哪些软件包所依赖
    apt-cache showpkg 软件包名查看软件包的依赖关系信息
    apt-cache policy 软件包名显示软件包的安装状态和版本信息

  6. apt-get 操作软件包

子命令 说明
apt-get update 获取最新的软件包列表,同步/etc/apt/sources.list和/etc/apt/sources.list.d中列出的源的索引
apt-get upgrade 更新当前系统中所有已安装的软件包,并同时更新这些软件包所依赖的软件包
apt-get install 下载、安装软件包并自动解决依赖关系
apt-get remove 卸载指定的软件包
apt-get autoremove 自动卸载所有未使用的软件包
apt-get purge 卸载指定的软件包及其配置文件
apt-get source 下载软件包的源代码
apt-get clean 清理已下载的软件包,实际上是清理/var/cache/apt/archives目录中的软件包
apt-get autoclean 删除已卸载的软件的软件包备份
  1. 升级的最新版本来源于/etc/apt/sources.list列表中给出的安装源,另外与该文件功能相同的是/etc/apt/sources.list.d/目录下的.list文件。
    sources.list文件软件源记录信息含义:
    eg. deb http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
    第1个字段用于指示软件包的类型;
    第2个字段定义URL,表示提供软件源的CD-ROM、HTTP或FTP服务器的URL地址;
    第3个字段定义软件包的发行版本或分类,用于帮助APT命令遍历软件库。这些字段是用空格隔开的字符串,每个字符串分别对应相应的目录结构。如下:
    main Canonical支持的开源软件,大部分都是从这个分支获取的;
    universe 社区维护的开源软件
    restricted由设备生产商专用的设备驱动软件
    multiverse受版权或者法律保护的相关软件
    security重要的安全更新
    updates推荐的一般更新
    proposed预览版的更新
    backports无支持的更新,这种更新一般存在一些bug
    这些信息实际上指向的是http:archive.ubuntu.com/ubuntu/下dists目录。
    如要修改sources.list文件,需记得先使用cp命令备份一下文件

  2. 新立得界面软件包管理器(Synaptic Package Manager)安装apt-get install synaptic

  3. 使用alien可以将.rpm格式转换为.deb。

  4. .run与.bin下载以后,给文件添加执行软件,安装即可
    chmod +x 文件名.run
    通常安装目录下回提供反安装脚本uninstall,如没有则会提供维护工具,例如QT的MaintenanceTool。

  5. 使用源码安装比较复杂,再说。。。

七、系统高级管理

  1. 静态查询进程命令ps
    常用命令ps -aux显示的部分列信息含义如下:
    VSZ表示占用虚拟内存的数量
    RSS表示驻留内存的数量
    TTY表示进程的控制终端(?表示与控制终端没有关联)
    STAT表示进程运行状态(R准备就绪 S可中断的休眠状态 D不可中断的休眠状态 T暂停执行 Z不存在但暂时无法消除 W无足够内存页面可分配 <高优先级 N低优先级 L内存页面被锁定 s创建会话的进程 1多线程进程 +前台进程组)

  2. 动态查询进程命令top,按空格键立即刷新。
    部分列信息含义如下:
    PR表示优先级
    NI表示nice值(负值表示高优先级,正值表示低优先级)
    VIRT表示进程使用的虚拟内存总量(单位kb)
    RES表示进程使用的、未被换出的物理内存大小(单位kb)
    SHR表示共享内存大小
    S表示进程状态

  3. 进程管理

  1. 系统启动
    GRUB配置文件/boot/grub/grub.cfg,该文件是由grub-mkconfig命令根据/etc/grub.d中的模板和/etc/default/grub中的设置自动生成的。
    所以我们编辑/etc/default/grub后,输入update-grub命令后修改内容便会自动更新至/boot/grub/grub.cfg文件中。

  2. Ubuntu运行级别
    Linux标准的运行级别从0~6,Debian系列的Linux版本一般讲运行级别2作为默认启动的级别。
    Ubuntu与Redhat的运行级别如下:

级别 Ubuntu Redhat
0 关机(halt) 关机
1 单用户模式。以root身份开启一个虚拟控制台,主要用于管理员维护系统 同Ubuntu
2 带显示器(GUI)的完整多用户模式 多用户模式,不支持NFS。除不启动网络功能外,级别与3相同
3 带显示器(GUI)的完整多用户模式 完整多用户模式。允许所有用户登录,拥有完整的功能,但是以文本模式进入系统
4 带显示器(GUI)的完整多用户模式 保留。用户自定义环境
5 带显示器(GUI)的完整多用户模式 X11图形模式。与级别3功能一样,拥有完整功能,以图形界面模式进入系统
6 重启 重启
  1. Ubuntu现在采用Upstart与System V initialzation启动服务。

  2. Linux使用Internet网络服务文件/etc/services来定义网络服务名和它们对应使用的端口号及协议。
    Linux系统的端口范围为0~65535,分为三个不同意义的范围:

  1. Ubuntu会将服务的启动脚本存放在/etc/init.d目录下。
    Ubuntu将各个运行级别对应的脚本文件存放在/etc/rcn.d目录中。这些目录下存放的是指向/etc/init.d目录中脚本程序的符号链接。
    命名规则为:S表示启动,K表示停止,后面接的数字表示执行顺序。

  2. 从所有运行级别中删除指定服务的启动项
    update-rc.d -f 服务名 remove
    向所有运行级别中添加指定服务的启动项
    update-rc.d -f 服务名 defaults

  3. 使用Linux服务启动脚本管理服务语法:
    /etc/init.d/服务启动脚本名 {start|stop|status|restart|reload|force-reload}
    其中reload指不重新启动服务的前提下加载该服务的配置文件。
    也可使用service命令来替代脚本的全路径。
    service 服务启动脚本名 {start|stop|status|restart|reload|force-reload}

  4. 配置服务启动状态
    其它Linux发行版通常使用chkconfig工具来配置服务启动状态,Ubuntu可以使用sysv-rc-conf工具:

  1. 自动化周期任务配置
  1. 一次性任务配置at(batch类似)
  1. 系统日志管理
    一些Linux版本采用的是syslog工具,日志配置文件是/etc/syslog.conf
    而Ubuntu采用的是rsyslog工具,日志配置文件为/etc/rsyslog.conf,并且将所有配置文件放置/etc/rsyslog.d目录下,默认的是/etc/rsyslog.d/50-default.conf
    每天信息配置格式:
    信息来源.优先级 处理方式
信息来源 说明 信息来源 说明
authpriv 安全/授权 mail 电子邮件系统
cron at或cron定时执行 news 网络新闻系统
daemon 守护进程 syslog syslogd内部
ftp ftp守护进程 user 一般用户级别
kern 内核 uucp UUCP系统
lpr 打印系统 localN 保留
优先级 说明 优先级 说明
debug 调试排错信息,仅对程序开发人员有用 err 一般的错误信息
info 一般信息,可以忽略 crit 关键状态信息
notice 正常提示信息 alert 需特别注意的警报信息,一般要迅速更正
warn 可能是由问题的警告信息 emerg 最严重,紧急状况,一般是系统不可用
  1. 大部分日志文件放置在/var/log目录心中。

八、Ubuntu桌面应用

  1. FileZilla
  2. GIMP图像处理
  3. Inkscape矢量图像编辑器
  4. Dia图表编辑器
  5. VLC媒体播放
  6. Audacity音频编辑工具
  7. Openshot视频编辑工具
  8. LibreOffice组件:Writer(文本文档 .odt)、Cacl(电子表格 .ods)、Impress(演示文稿 .odp)、Draw(绘图 .odg)、Math(公式 .odf)、Base(数据库 .odb)

九、Shell编程

  1. HelloWorld示例
#!/bin/bash
echo "Hello World!"
echo -n “当前日期和时间”
date
echo "当前登录用户名:`whoami`"

其中#!/bin/bash表示使用的Shell解析器是bash
echo命令用来显示提示信息,参数-n表示在显示信息时不自动换行
反引号用于命令转换,所以执行whoami命令

  1. 包含外部脚本文件用法
    . 脚本文件名

    source 脚本文件名

  2. 执行Shell脚本方式

  1. 调试Shell脚本
    bash [选项] 脚本名
  1. Shell变量类型分三种:
内部变量 说明
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n表示第几个参数,当参数超过10时,用{}界定
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数
$@ 传递给脚本或函数的所有参数。被双引号包含时,会将各个参数分开输出
$? 上个命令的退出状态或返回值
$$ 当前Shell进程ID

可以使用set [参数列表]为位置参数重新赋值。

  1. printf命令格式
    printf 格式字符串 [参数列表...]

  2. echo输出显示
    单引号字符串不进行转义。

  3. 变量值读取
    read 变量

  1. 变量替换
  1. 数组
  1. 表达式
  1. 逻辑表达式
  1. 整数关系云算法
  1. 字符检测云算法
  1. 文件测试运算符
文件测试运算符 含义
-b 检测文件是不是块文件
-c 检测文件是不是字符设备文件
-d 检测文件是不是目录
-f 检测文件是不是普通文件
-g 检测文件是不是设置了SGID位
-k 检测文件是否设置了粘着位
-p 检测文件是不是具体管道
-u 检测文件是否设置了SUID位
-r 检测文件是否可读
-w 检测文件是否可写
-x 检测文件是否可执行
-s 检测文件是否为空
-e 检测文件或目录是否存在
  1. 布尔运算
  1. if语句
if [ 条件表达式1 ]
then
  语句序列1
elif [ 条件表达式2 ]
then
  语句序列2
else
  语句序列3
fi
  1. case语句
case 值 in
模式1)
  语句序列1
;;
模式2)
  语句序列2
;;
......
模式n)
  语句序列n
;;
*)
  其它语句序列
esac
  1. while语句
while 测试条件
do
  语句序列
done
  1. until语句
until 测试条件
do
  语句序列
done
  1. for语句
for 变量 [in 列表]
do
  语句序列
done
  1. break、continue语句
    break [n]表示跳出几层循环。

  2. exit语句
    exit [n]n是设定的退出值。

  3. 函数定义和调用

[function] 函数名()
{
  命令序列
  [return 返回值]
}

直接使用函数名即能调用函数。

十、C/C++编程

  1. Emacs编辑器

后面两章为JAVA、Android开发和LAMP平台与PHP开发环境的搭建,暂时不需要,就不记录了。

上一篇 下一篇

猜你喜欢

热点阅读