linux 养成计划
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 -ashell
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[0mshell 脚本
#! /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/null2>&1/&>: 输出 + 错误输出 一起输出管道 |
; && ||: 命令顺序执行; 命令1正确执行才执行命令2; 命令1执行不正确才执行命令2