material/OS/linux/command.md
2025-01-10 22:29:51 +08:00

405 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 基础命令
> sudo
> > 配置文件/etc/sudoers 使用visudo进行编辑
+ -u # 指定用户
> pwd
> cd
> ls
> > 列出目录下所有内容
+ -F # 在文件名后加提示符 '/' '*' '@'
+ -a # 显示隐藏文件
+ -l # 列出文件信息
+ -d # 目录
+ -h # 将文件大小输出为易读的格式
+ -s # 在行首显示(大小)?
+ -i # inode
# 文件目录操作管理
> cat
> >
+ -n # 显示行号
> less
> od
> > 查看非纯文本
+ -t # 类型 a, d, f, o, x
> grep
> > 文件字符串匹配
+ -A <n> # 后续n行
+ -B <n> # 前n行
+ -n # 显示行号
+ -v # 反向选择
+ -E 'o1|o2|o3' # 多匹配
> wc
> > 统计
+ -l 行数
+ -m 字符
+ -w
> mkdir
> touch
> mv
> >
+ -i # 覆盖时警告
+ -b # 重合加~
> cp
> > copy
+ -i # 覆盖时警告
+ -b # 重合加~
+ -u # 仅复制更新
+ -v # 详细显示
+ -r # 目录
> rm
> >
+ -i # 覆盖时警告
+ -r # 目录
+ -f # 强制
> chown
> > 所有权
+ -R # 同时更改所有子目录
> chmod
> > 权限修改
+ -R # 同时更改所有子目录
```bash
SUID 4
执行二进制文件时,权限提升为文件所有者
SGID 2
在此权限下的目录进入后,有效用户组变为所有组
SBIT 1
在此权限下的文件夹里创建文件仅有root与属主有权操作
```
> file
> > 观察文件类型
+ -i 查看编码格式
+ -z 查看压缩格式
+ -b 查看文件的系统架构
+ -p 详细信息
> umark
> > 设置默认权限,默认是拿掉权限
> ln
> > 链接(硬)
+ -s # 符号链接(软)
> diff
> > 比较文件
+ -b # 忽略空格
+ -i # 忽略大小写
+ -B # 忽略空白行
> patch
> > 补丁制作
> > example
```bash
diff -Naur <oldfile> <newfile> > <file.patch> # -p[n] 拿掉路径中的/
patch -p<n> < <file.patch> # 制作
patch -p<n>-R < <file.patch> # 还原
```
# 文件查找
> find
> > find [OPTION] [path] [expression]
+ -name [filename] # 指定文件名
+ -print # 打印结果在终端
+ -type [type] # 指定类型
+ -atime <+-n> # n天前使用的文件
+ -mtime <+-n> # n天前修改的文件
> > example
+ find /usr/bin -name zip -print
> locate
> whereis
> > 找命令文件
> which
> > 找PATH
+ -a # 全部列出
> whoami
> uname
> > 查看系统版本信息
+ -a 全部信息
# 文件压缩
> gzip
> >
+ -d # 解压
+ -l # 查看压缩效果
> bzip2
> >
+ -d # 解压
+ -l # 查看压缩效果
> xz
> >
+ -z # 压缩
+ -d # 解压
+ -l # 查看压缩效果
+ -k # 保留压缩原文件
+ -<number> # 压缩等级
+ -T <n> # 使用多个线程
+ -v # 显示详细过程
> tar
> > 文件打包
+ -c # 创建
+ -x # 解开
+ -v # 显示详细过程
+ -f <file> # 指定文件名
+ -z # 调用gzip
+ -j # 调用bzip2
+ -J # 调用xz
> > example
+ tar -cvjf shell.tar.bz2 shell/
> dd
> >
+ if # input file/device
+ of # output file/device
+ bs # one black size
+ count # *bs
# 磁盘
> mount
> > 挂载文件系统
+ -r # 只读
+ -o <loop> # 特殊设备
> > /etc/fstab 配置文件
+ auto # 开机自动挂载
+ noauto # 不自动挂载
+ ro # read only
+ rw # read and write
+ user # 任意用户可挂载
> > example
+ [设备/UUID] [挂载点] [文件系统] [参数] 0 0
> umount
> > 卸载文件系统
> df
> > 观察磁盘使用情况
> > example
+ df -hT
> sync
> smartctl
> > 查看硬盘状态参数
-a 全部参数
-H 是否正常
# 用户
> useradd
> >
+ -m # 同时建立主目录
+ -g # 指定用户组
+ -s # 指定shell
> groupadd
> passwd
> userdel
> >
+ -r # 删除主目录
> usermod
> >
+ -d # 修改主目录
+ -e <MM/DD/YY># 修改账号有效期
+ -s # 修改shell
> id
> > 查看用户信息
> /etc/passwd
> > example
+ 登录名:口令:UID:GID:x信息:主目录:shell
> /etc/group
> > example
+ 组名:组口令(一般无):GID:user1,user2,user3
### 用户所有组是passwd和groups的并集
> newgrp
> > 切换有效用户组
# 进程
> ps
> >
+ aux
> top
> lsop
> > 查看占用文件的进程
> kill
> > 发送信号
+ -l # 列出所有信号
> nice renice
> > 调整谦让度
# 网络
> ip
> >
> ss
> > 查看端口开放情况
+ -t # tcp
+ -u # udp
+ -n # 以端口号显示
+ -l # 列出正在监听的服务
+ -p # + pid
+` -r # 路由表
> > example
+ ss -tlunp
> ping
# 系统
> systemctl
> > systemctl [command] [unit]
+ start
+ stop
+ restart
+ reload
+ enable
+ disable
+ status
+ mask # 强制注销
+ unmask
> >
+ list-units
> >
+ get-default # 获取目前target
+ set-default # 设置默认target
+ isolate # 切换target
> > >
+ poweroff
+ reboot
+ suspend # 挂起
+ hibernate # 休眠
+ rescue # 修复
# 硬件
> dmidecode
> > 获取硬件信息
+ -q # 简洁
+ -t # 指定查看类型
# 软件包管理
> dpkg
> > .deb
+ -i # 安装
+ -l # 查看版本
+ -r # 卸载
> apt
> > apt-get
> > >
+ updata # 更新软件包缓存
+ upgrade # 更新已有软件包的最新版本
+ install # 下载并安装
+ remove # 卸载
+ source # 下载源码
> > apt-cache
> > >
+ search # 搜索
+ depends # 列出依赖
> > 配置源
+ /etc/apt/sources.list
# 其他命令
# nohup 命令挂机(退出登陆后依然执行)
nohup [command] &
`screen` 主要用于用户开启多个独立的会话(称为"窗口")在这些会话之间可以自由切换而不会中断已经运行的程序
### 主要功能:
1. **多会话管理**:可以同时运行多个独立的 shell 会话。
2. **会话分离与重连**:可以从一个会话中分离出来,稍后再重新连接到该会话。
3. **窗口分割**:在一个 screen 会话中,可以水平或垂直分割窗口,以同时查看和操作多个任务。
4. **滚动记录**:可以查看会话的滚动记录,即使之前的输出已经滚出屏幕。
5. **复制和粘贴**:在 screen 会话中,可以使用快捷键复制文本并粘贴到其他位置。
6. **会话锁定**:可以锁定当前会话,防止他人查看或操作。
7. **自动保存会话**在网络断开或其他异常情况下screen 可以自动保存当前会话状态。
### 基本使用方法:
1. **启动一个新的 screen 会话**
screen
2. **列出当前的 screen 会话**
screen -ls
3. **重新连接到一个已存在的会话**
screen -r [会话ID或名称]
4. **分离当前会话**
在 screen 会话中按 `Ctrl-a` 然后按 `d`。
5. **在会话中创建新窗口**
在 screen 会话中按 `Ctrl-a` 然后按 `c`。
6. **在窗口之间切换**
在 screen 会话中按 `Ctrl-a` 然后按 `n`(下一个窗口)或 `Ctrl-a` 然后按 `p`(上一个窗口)
7. **分割窗口**
- 水平分割:在 screen 会话中按 `Ctrl-a` 然后按 `"`(双引号键)。
- 垂直分割:在 screen 会话中按 `Ctrl-a` 然后按 `S`。
8. **调整分割窗口的大小**
- 增加/减少水平大小:在 screen 会话中按 `Ctrl-a` 然后按方向键。
- 增加/减少垂直大小:在 screen 会话中按 `Ctrl-a` 然后按 `Shift` 加上方向键。
9. **退出 screen 会话**
- 关闭当前窗口:在 screen 会话中按 `Ctrl-a` 然后按 `k`。
- 退出所有窗口并结束会话:在 screen 会话中按 `Ctrl-a` 然后按 `\`。
10. **锁定当前会话**
在 screen 会话中按 `Ctrl-a` 然后按 `x`
# ulimit
查看和修改进程运行资源限制
-H/S # 设置/显示 软/硬 限制
-a # 显示所有
-t # cpu time
-f # file size
-s # stack size
-c # core file size
-m # memory size
-l # lock memory size
-p # user processes
-n # open file
#ulimit -Ht 3600