linux 养成计划

JerryXia 发表于 , 阅读 (2)

linux 养成计划

慕课网: http://www.imooc.com/video/3235
慕课网: http://www.imooc.com/learn/111

内核版本: 所有 linux 系统都使用相同的内核, 可以在 https://www.kernel.org/ 查看
发行版本: redhat 系(centos) / debian 系(Ubuntu)
网站统计: http://www.netcraft.com/, 包括 server / os 等占比
Android: quicksshd 用来开启 ssh
xshell: ssh 工具; 字体 / 字符编码 /

开源软件

apache nginx mysql php mongodb Python ruby

Samba: 实现 smb 协议, 包括 server + client, 用来共享文件和打印机
sphinx: 基于 sql 的全文检索

如何提问

  • 先要尝试自己解决
    帮助文档
    baidu / Google
    示例

  • 提问的智慧
    问题详尽
    贴图

基础知识

严格区分大小写
一切皆文件, 包括硬件
扩展名: os 不靠扩展名来区分文件类型, 加扩展名是为了帮助
window 程序无法在 linux 运行
字符界面优势: 占用系统资源更少; 减少出错 / 被攻击 的可能
vmare: cpu 映射 / 克隆
分区: 主分区(最多4个, 由 硬盘 决定的) / 扩展分区(最多1个) -> 逻辑分区(多个); 挂载
文件系统: 格式化主要是为了修改 文件系统(FAT32 / NTFS / etx4); 特定区域写入特定数据; 4k对齐, 最小数据块(block)大小

硬链接: 系统通过文件的 i 节点来查找文件, 只要文件的 i 节点不变, 即使改名系统也可以找到这个文件
软链接: 快捷方式

文件时间: mtime 修改时间; atime 访问时间; ctime 改变时间; +10 10天前; 10 10天当天; -10 10天内
文件size: k/m 或者不带单位; +10k 大于 10k; 10k 等于 10k; -10k 小于 10k

系统运行级别: 0~6

特殊字符: 引号 / 通配符 / 反引号 / $xxx / $(xxx)

权限

目录: 相对路径 / 绝对路径
文件类型: -(文件) d(目录) l(链接)
权限: r(读) w(些) x(可执行)
用户 / 用户组 / 其他

常用目录作用

usr: unix system resource
推荐放文件: /root, /home/xxx

/根目录    /lib        函数库    /bin        命令(普通用户可以读取)    /usr/bin    /sbin       命令, root 才可以执行    /usr/sbin    /usr/local/bin      编译安装的软件最好放这里, 根据是否需要 root 权限执行放到不同的目录    /usr/local/sbin    /boot       启动相关    /dev        特殊文件, 设备    /etc        配置文件    /root       root用户    /home       普通用户    /media      3个空目录, 常用来挂载文件    /mnt    /misc    /proc       这里2个目录的内容直接写到内存    /sys    /tmp        系统临时文件目录

常用命令

命令格式: 命令 [选项] [参数]
[root@VM_136_249_centos ~]#: 命令提示符, 用户名 + 机器 + 目录 + 用户类型
tab: 补全, 目录 / 命令

  • 常用参数

a(--all): 全部
h(human): 人性化显示, 如 ll -h
h(--help): 帮助
v/V(--version): 版本
v/V(--verbose): 冗长 / 啰嗦
r/R(--recursive): 递归
-p, --parents: 类似递归

# 查看 系统 / 用户 信息uname -a # 查看系统信息: 内核 / 位数w root # 查看当前登录用户的信息; who 更简单last # /var/log/wtmp, 二进制文件, 防止被修改; lastlogsetup # 系统配置, redhat 系统# 文件 & 目录mkdir -p path/to/dirrmdir # 只能删除空目录cd -/~/./..pwdll -aihrm -rficp -rpda # 原名复制 / 改名复制mv # 剪切 / 改名# 搜索 & 查看locate # /var/lib/mlocate 保存 db 信息updatedb # 根据 /etc/updatedb.conf 更新, 默认一天更新一次echo $PATHexport PATH=$PATH:~/.composer/vendor/binwhereis -bm # 可以区分 内部命令 / shell 命令which # 可以查看到别名whatis # 就是 man -fapropos # 就是 man -kfind [搜索范围] [搜索条件]find / -name/-i/-user/-nouser/-mtime/-size/-inum/-a/-o/-exec xxx {} \; # 比较耗资源, 建议限定搜索范围; 完全匹配, 需要使用通配符进行模糊查询grep -vi # 模糊匹配wc -cwl # 统计# 帮助命令man -f/-k/-5 xxx # 查看 man 文档; man 的级别; 模糊匹配; 查看不同级别的文档xxx --helpinfo# 压缩解压zip -r xxx.zip xxxunzip -o xxx.zipgzip xxxgzip -c xxx > xxx.gz # 不能压缩目录, 只能压缩目录里面的文件gzip -d / gunzipbzip2 xxx # xxx.bz2, 类似 gziptar z/j c/x vf # gz/bz2; 压缩 / 解压# 关机重启shutdown -chr [时间 / now] # 更安全haltinitrunlevel# 挂载mount -a

shell

shell: os是不能识别我们输入的 ls 这样的命令的, 需要翻译成 机器码 os 才能识别, 翻译的过程就是 shell 来完成的
可以尝试效率更高的 shell: zsh
2中主要类型: B(linux , 其中bash 是标准) / C(unix, 类 c 语法)
shell 可以一层一层嵌套

echo $SHELL # 查看当前使用的 shell
/etc/shells # 当前系统安装的 shell
C-d # 退出当前shell, 比如 退出 redis-cli / mysql

  • echo
    -e: 开启转义, 需要使用 ""
    常规转义字符
    16进制 \x
    颜色: \e[1;31m xxx \e[0m

  • shell 脚本
    #! /bin/bash: 表示 使用 /bin/bash 来解析当前脚本
    #: 注释
    执行方式: chmod +x / bash xxx

  • 别名 alias
    alias / unalias: 别名设置
    ~/.bashrc: 当前用户的环境变量配置文件
    命令执行顺序: 绝对/相对路径 -> 别名 -> bash 内部命令 -> $PATH

  • 快捷键
    C-c: 终止当前脚本
    C-z: 放入后台
    C-l: 清屏
    C-u: 删除一行
    C-a/e: 行首/行尾
    C-r: 在历史命令中搜索

  • history 历史命令
    history -cw
    ~/.bash_history: 保存历史命令
    /etc/profile -> HISSIZE: 历史命令保存数量
    推荐添加 h -> history, hsi -> history|grep 别名
    !n: 执行第 n 条历史命令
    !xxx: 执行最后一条 xxx 开头的命令

  • 重定向
    0 /dev/stdin
    1 /dev/stdout
    2 /dev/stderr
    /dev/null
    2>&1 / &>: 输出 + 错误输出 一起输出

  • 管道 |
    ; && ||: 命令顺序执行; 命令1正确执行才执行命令2; 命令1执行不正确才执行命令2