很高兴和你相遇
这里正在记录我的所思所学
订阅免费邮件通讯接收最新内容
首页 归档 想法 工具 通讯 播客 简历 主页

Linux Command Line 学习笔记3

说明;写Linux Command Line 学习笔记系列文章本意只是记录自己学习 《Linux Command Line 》 这本书的过程中看到的一些自己没有留意到的地方,因此绝大多数内容只是记录了相关知识点而没有实际扩展内容,纯粹是为了自己后期回顾时有迹可循。另外,因为直接看的是原版书,所以很多地方中英混杂。更详细地学习建议去阅读原书即可。

Advanced Keyboard Tricks

  • 建议调换大写键和 ctrl 的映射关系

  • 光标瞬间移动

    Ctrl-a 移动光标到行首
    Ctrl-e 移动光标到行尾
    Ctrl-f 光标前移一个字符;和右箭头作用一样
    Ctrl-b 光标后移一个字符;和左箭头作用一样
    Alt-f 光标前移一个字
    Alt-b 光标后移一个字
    Ctrl-l 清空屏幕
    
  • 文本修改

    Ctrl-d 删除光标位置的字符
    Ctrl-t 光标位置的字符和光标前面的字符互换位置
    Alt-t 光标位置的字和其前面的字互换位置
    Alt-l 把从光标位置到字尾的字符转换成小写字母
    Alt-u 把从光标位置到字尾的字符转换成大写字母
    
  • 复制剪切

    Ctrl-k 剪切从光标位置到行尾的文本
    Ctrl-u 剪切从光标位置到行首的文本
    Alt-d 剪切从光标位置到词尾的文本
    Alt-Backspace 剪切从光标位置到词头的文本 如果光标在一个单词的开
    头,剪切前一个单词
    Ctrl-y 把剪切环中的文本粘贴到光标位置
    
  • 补全

    tab; tab两次显示可能的自动补全内容

  • 历史命令

    .bash_history

    • 默认保存 500 条历史命令

    • 浏览历史命令history |less

    • 执行时可以使用 !1120

    搜索历史命令

    • Ctrl-r启动递增搜索,输入想要查找的内容
    • 回车即可执行
    • Ctrl-j复制命令到当前行

    展开历史命令

    • !88第 88 行历史命令
    • !string重复最近历史列表中,以这个字符串开头的命令

    linux 中的录屏功能

    • scirpt命令
    • script <file>屏幕显示的一切都会记录在文件中
    • 在原有文件继续追加使用-a选项,-q安静模式
    • 结束记录输入 exit或者ctrl-d

Permissions 权限

  • 三类人:拥有者,组员,其他人

    命令id 查看用户相关的信息

    • uid 用户 id
    • gid 组 id

    ubuntu 中,普通用户账号从 1000 开始

    用户信息存储位置

    • 用户账户: /etc/passwd包含用户(登录)名,uid,gid,帐号的真实姓名,家目录,和登录 shell
    • 组定义:/etc/group
    • 密码信息:/etc/shadow
  • 三种操作方式:读取,写入,执行

    文件模式-rw-rw-r--

    • 第一个字符表示文件类型
    • rwx 读写执行

    chmod 更改文件模式

    • 八进制更改

      • chmod 755
    • 符号更改

      符号表示法分为三部分:影响谁,执行哪个操作,要设置哪种权限
      影响谁

      u 所有者
      g 用户组
      o 其他人
      a 所有
      

      哪个操作

      \+ 加权限
      \- 删除权限
      = 指定可用权限
      

      举例

      u+x 为所有者添加执行权限。
      u-x 删除所有者可执行权限。
      +x 为文件所有者,用户组,和其他所有人添加可执行权限。等
      价于a+x。
      o-rw 除了所有者和用户组,删除其他人的读权限和写权限。
      go=rw 给群组的主人和任意文件拥有者的人读写权限。如果群组的主人或全局之前已经有了执行的权限,他们将被移除。
      u+x,go=rw 给文件拥有者执行权限并给组和其他人读和执行的权限。多种设定可以用逗号分开。
      
  • 更改身份

    su 以其他用户身份和组 ID 运行一个 shell
    sudo

    • sudo 命令不要求 root 密码
    • 允许一个普通用户以不同的身份(通常是超级用户),通过一种非常可控的方式来执行命令
    • sudo 不会重新启动一个 shell,也不会加载另一个用户的 shell 运行环境
  • chown 更改文件所有者和用户组

    chown [owner][:[group]] file...

  • chgrp 更改用户组所有权

  • passwd 更改用户密码

  • 创建和维护用户和用户组

    adduser
    useradd
    groupadd
    

进程

  • Linux 内核通过使用进程,来管理多任务。

  • 系统启动的时候,内核先把一些它自己的程序初始化为进程,然后运行一个叫做 init 的程序。

  • init 再运行一系列的称为 init 脚本的 shell 脚本(位于/etc),它们可以启动所有的系统服务。

  • 许多系统服务以守护(daemon)程序的形式实现,守护程序仅在后台运行,没有任何用户接口。

  • 一个程序可以发动另一个程序,这个事实在进程方案中,表述为一个父进程创建了一个子进程。

  • 系统分配给每个进程一个数字,这个数字叫做进程 ID 或 PID

  • 查看进程

    ps x

    R 运行。这意味着,进程正在运行或准备运行。
    S 正在睡眠。进程没有运行,而是,正在等待一个事件,比如说,一个按键或者网络数据包。
    D 不可中断睡眠。进程正在等待I/O,比方说,一个磁盘驱动器的I/O。
    T 已停止. 已经指示进程停止运行。稍后介绍更多。
    Z 一个死进程或“僵尸”进程。这是一个已经终止的子进程,但是它的父进程还没有清空它。(父进程没有把子进程从进程表中删除)
    < 一个高优先级进程。这可能会授予一个进程更多重要的资源,给它更多的CPU 时间。进程的这种属性叫做niceness。具有高优先级的进程据说是不好的(less nice),因为它占用了比较多的CPU 时间,这样就给其它进程留下很少时间。
    N 低优先级进程。一个低优先级进程(一个“好”进程)只有当其它高优先级进程执行之后,才会得到处理器时间。
    

    ps aux

    USER 用户ID. 进程的所有者。
    %CPU 以百分比表示的CPU 使用率
    %MEM 以百分比表示的内存使用率
    VSZ 虚拟内存大小
    RSS 进程占用的物理内存的大小,以千字节为单位。
    START 进程运行的起始时间。若超过24 小时,则用天表示。
    

    top 动态显示

    • 显示内容 最上面是系统概要,下面是进程列表,以 CPU 的使用率排序

    • 系统概要解读

  • 中断进程

    ctrl-c 注意并非所有程序都可以如此中断

  • 程序后台运行

    command & 返回工作号和 PID

    jobs 查看后台运行程序

    后台运行的进程对一切来自键盘的输入都免疫,也不能用Ctrl-c 来中断它

    使用 fg %1,让工作号是 1 的进程返回前台执

  • 停止进程(不终止)

    ctrl-z , 使用fg 命令,可以恢复程序到前台运行,或者用bg 命令把程序移到后台。\

  • 向进程发送信号

    kill [-signal] PID

    常用信号

  • 向多个进程发送信号

    killall

  • 树型结构的进程列表

    • pstree 输出一个树型结构的进程列表,这个列表展示了进程间父/子关系。
    • ps auxf
    • ps uf
  • 系统资源使用快照

    • vmstat 输出一个系统资源使用快照,包括内存,交换分区和磁盘 I/O。
    • 为了看到连续的显示结果,则在命令名后加上延时的时间(以秒为单位)。例如vmstat 5
    • 终止输出,按下Ctrl-c 组合键。

本文作者:思考问题的熊

版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。

如果你对这篇文章感兴趣,欢迎通过邮箱或者微信订阅我的 「熊言熊语」会员通讯,我将第一时间与你分享肿瘤生物医药领域最新行业研究进展和我的所思所学所想点此链接即可进行免费订阅。


· 分享链接 https://kaopubear.top/blog/2017-09-10-LinuxCommandLine3/