# linux基础命令 ## 目录 - [文件操作](#) - [cd](#) - [ls](#) - [cat](#) - [less](#) - [od](#):查看二进制文件 - [grep](#) - [wc](#) - [mkdir](#) - [touch](#) - [mv](#) - [cp](#) - [rm](#) - [chown](#) - [chmod](#) - [file](#) - [umark](#) - [ln](#) - [diff](#) - [patch](#) - [rsync](#):同步命令 - [find](#) - [locate](#):高效文件查找 - [whereis](#) - [which](#):查找命令 - [whoami](#) - [uname](#):系统内核版本等信息 - [文件压缩](#) - [gzip](#) - [bzip2](#) - [xz](#) - [tar](#) - [dd](#) - [磁盘](#) - [iostat](#iostat) : 监测磁盘活动 - [mount](#) - [umount](#) - [df](#) - [sync](#) - [smartctl](#):查看smart参数 - [parted](#) - [用户](#) - [sudo](#) - [useradd](#) - [groupadd](#) - [passwd](#) - [userdel](#) - [usermod](#) - [id](#) - [newgrp](#):切换有效用户组 - [last](# last) : 查看用户登陆记录 - [进程](#) - [ps](#) - [uptime](#uptime) - [vmstat](#vmstat) - [top](#) - [btop](#) - [lsop](#):查看占用文件的进程 - [kill](#) - [bg](#) : 暂停的jobs 放到后台运行 - [fg](#) : 后台拉回前台 - [jobs](#) - [ulimit](#) - [网络](#) - [ip](#) : many net tool - [ss](#) : 端口 - [ping](#) - [curl](#) - [wget](#) - [系统](#) - [systemctl](#) - [dmidecode](#) - [dpkg](#) - [apt](#) - [编解码工具](#) - [其他](#) - [](#) ## 文件操作 ### pwd ### cd ### ls + -F # 在文件名后加提示符 '/' '*' '@' + -a # 显示隐藏文件 + -l # 列出文件信息 + -d # 目录 + -h # 将文件大小输出为易读的格式 + -s # 在行首显示(大小)? + -i # inode ### cat + -n # 显示行号 ### less ### od + -t # 类型 a, d, f, o, x ### grep + -A # 后续n行 + -B # 前n行 + -n # 显示行号 + -v # 反向选择 + -E 'o1|o2|o3' # 多匹配 + -r "指定字符串" /目标文件夹路径 # 结合递归选项来查找文件夹下包含指定字符串的文件 ### wc + -l 行数 + -m 字符 + -w word ### mkdir ### touch ### mv + -i # 覆盖时警告 + -b # 重合加~ ### cp + -i # 覆盖时警告 + -b # 重合加~ + -u # 仅复制更新 + -v # 详细显示 + -r # 目录 ### rm + -i # 覆盖时警告 + -r # 目录 + -f # 强制 + -R # 同时更改所有子目录 ### chmod + -R # 同时更改所有子目录 ```bash SUID 4 执行二进制文件时,权限提升为文件所有者 SGID 2 在此权限下的目录进入后,有效用户组变为所有组 SBIT 1 在此权限下的文件夹里创建文件,仅有root与属主有权操作 ``` ### file + -i 查看编码格式 + -z 查看压缩格式 + -b 查看文件的系统架构 + -p 详细信息 ### umark ### ln + -s # 符号链接(软) ### diff + -r # 递归比较两个目录 + -b # 忽略空格 + -i # 忽略大小写 + -B # 忽略空白行 + -w # 忽略空白字符 + -u # 使用"统一格式”显示,易于生成补丁文件 ### patch ```bash diff -Naur > < -R < # 压缩等级 + -T # 使用多个线程 + -v # 显示详细过程 ### tar + -c # 创建 + -x # 解开 + -v # 显示详细过程 + -f # 指定文件名 + -z # 调用gzip + -j # 调用bzip2 + -J # 调用xz + tar -cvjf shell.tar.bz2 shell/ ### dd + if # input file/device + of # output file/device + bs # one black size + count # count + `oflag=sync` sync ## 磁盘 ### mount + -r # 只读 + -o # 特殊设备 + auto # 开机自动挂载 + noauto # 不自动挂载 + ro # read only + rw # read and write + user # 任意用户可挂载 __/etc/fstab__ [设备/UUID] [挂载点] [文件系统] [参数] 0 0 ### umount ### df + df -hT ### sync ### smartctl -a 全部参数 -H 是否正常 ### parted + -i 列出所有设备的分区信息 + -s 非交互模式 + print 显示当前设备的分区表 + mklabel [gpt/msdos] 创建分区表 + mkpart [part-type] [fs-type] [start] [end] 创建一个分区 `例: mkpart primary ext4 1MiB 1000MiB` + rm [number] 删除指定编号的分区 + resizepart [number] [size] 重调大小 + set [number] [mode] 设置分区标志 + quit `sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%` `sudo parted -s /dev/sdb rm 2` ## 用户 ### sudo + -u # 指定用户 ### useradd + -m # 同时建立主目录 + -g # 指定用户组 + -s # 指定shell ### groupadd ### passwd ### userdel + -r # 删除主目录 ### usermod + -d # 修改主目录 + -e # 修改账号有效期 + -s # 修改shell ### id `/etc/passwd` 登录名:口令:UID:GID:x信息:主目录:shell `/etc/group` + 组名:组口令(一般无):GID:user1,user2,user3 __用户所有组是passwd和groups的并集__ ### newgrp ### last - **-n <数字>** 表示查看最近n条 - **-i** 显示IP而不是主机名 ## 进程 ### ps + aux ### uptime `load average` 为过去 1, 5, 15 分钟内等待资源的进程数量 若持续高于cpu核心数,表明进程可能在争抢资源 ### vmstat 检测系统状态 + **`r`** cpu队列 + **`b`** io等待 + **`si/so`** swap队列 - `-f` 自启动fork次数 - `-d` 磁盘统计信息 - `-s` 统计 ### top ### btop ### lsop ### kill + -l # 列出所有信号 ### bg ### fg ### jobs ### nohup 命令挂机(退出登陆后依然执行) nohup [command] & `screen` 主要用于用户开启多个独立的会话(称为"窗口")在这些会话之间可以自由切换而不会中断已经运行的程序 1. **启动一个新的 screen 会话**: screen 2. **列出当前的 screen 会话**: screen -ls 3. **重新连接到一个已存在的会话**: screen -r [会话ID或名称] 4. **分离当前会话**: 在 screen 会话中按 `Ctrl-a` 然后按 `d`。 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 ## 网络 ### ip + ip neigh [OPTIONS] [COMMAND] + ip neigh add [IP] lladdr [MAC] dev [eth0] 添加表项 + ip neigh del [IP] dev [eth0] 删除表项 + ip neigh flush all 清空 _________________________________ REACHABLE:表示邻居设备可达。 STALE:表示邻居设备的条目已过期,但之前是可达的。 DELAY:表示正在等待确认邻居设备是否可达。 PROBE:表示正在积极探测邻居设备是否可达 _________________________________ ### ss + -t # tcp + -u # udp + -n # 以端口号显示 + -l # 列出正在监听的服务 + -p # + pid +` -r # 路由表 + ss -tlunp ### ping ### curl ### wget ## 系统 ### systemctl + 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 + -i # 安装 + -l # 查看版本 + -r # 卸载 ### apt + updata # 更新软件包缓存 + upgrade # 更新已有软件包的最新版本 + install # 下载并安装 + remove # 卸载 + source # 下载源码 + search # 搜索 + depends # 列出依赖 + /etc/apt/sources.list ### 编解码工具 + md5sum md5编码 + sha1sum sha1 + cksum crc + base64 + basenc 各种base64变种 + `--base64url` + `--base32` + `--base16` + `--base2msbf` 二进制 + `echo -n 你好|iconv -t ucs-2be|xxd-ps|sed 's/..../\\u&/g` unicode码 ## 其他 ======= # linux基础命令 ## 目录 - [linux基础命令](#linux基础命令) - [目录](#目录) - [文件操作](#文件操作) - [pwd](#pwd) - [cd](#cd) - [ls](#ls) - [cat](#cat) - [less](#less) - [od](#od) - [grep](#grep) - [wc](#wc) - [mkdir](#mkdir) - [touch](#touch) - [mv](#mv) - [cp](#cp) - [rm](#rm) - [chmod](#chmod) - [file](#file) - [umark](#umark) - [ln](#ln) - [diff](#diff) - [patch](#patch) - [rsync](#rsync) - [find](#find) - [locate](#locate) - [whereis](#whereis) - [which](#which) - [whoami](#whoami) - [uname](#uname) - [文件压缩](#文件压缩) - [gzip](#gzip) - [bzip2](#bzip2) - [xz](#xz) - [tar](#tar) - [dd](#dd) - [磁盘](#磁盘) - [mount](#mount) - [umount](#umount) - [df](#df) - [sync](#sync) - [smartctl](#smartctl) - [parted](#parted) - [用户](#用户) - [sudo](#sudo) - [useradd](#useradd) - [groupadd](#groupadd) - [passwd](#passwd) - [userdel](#userdel) - [usermod](#usermod) - [id](#id) - [newgrp](#newgrp) - [进程](#进程) - [ps](#ps) - [top](#top) - [btop](#btop) - [lsop](#lsop) - [kill](#kill) - [bg](#bg) - [fg](#fg) - [jobs](#jobs) - [nohup](#nohup) - [ulimit](#ulimit) - [网络](#网络) - [ip](#ip) - [ss](#ss) - [ping](#ping) - [curl](#curl) - [wget](#wget) - [系统](#系统) - [systemctl](#systemctl) - [dmidecode](#dmidecode) - [dpkg](#dpkg) - [apt](#apt) - [编解码工具](#编解码工具) - [其他](#其他) ## 文件操作 ### pwd ### cd ### ls + -F # 在文件名后加提示符 '/' '*' '@' + -a # 显示隐藏文件 + -l # 列出文件信息 + -d # 目录 + -h # 将文件大小输出为易读的格式 + -s # 在行首显示(大小)? + -i # inode ### cat + -n # 显示行号 ### less ### od + -t # 类型 a, d, f, o, x ### grep + -A # 后续n行 + -B # 前n行 + -n # 显示行号 + -v # 反向选择 + -E 'o1|o2|o3' # 多匹配 + -r "指定字符串" /目标文件夹路径 # 结合递归选项来查找文件夹下包含指定字符串的文件 ### wc + -l 行数 + -m 字符 + -w word ### mkdir ### touch ### mv + -i # 覆盖时警告 + -b # 重合加~ ### cp + -i # 覆盖时警告 + -b # 重合加~ + -u # 仅复制更新 + -v # 详细显示 + -r # 目录 ### rm + -i # 覆盖时警告 + -r # 目录 + -f # 强制 + -R # 同时更改所有子目录 ### chmod + -R # 同时更改所有子目录 ```bash SUID 4 执行二进制文件时,权限提升为文件所有者 SGID 2 在此权限下的目录进入后,有效用户组变为所有组 SBIT 1 在此权限下的文件夹里创建文件,仅有root与属主有权操作 ``` ### file + -i 查看编码格式 + -z 查看压缩格式 + -b 查看文件的系统架构 + -p 详细信息 ### umark ### ln + -s # 符号链接(软) ### diff + -r # 递归比较两个目录 + -b # 忽略空格 + -i # 忽略大小写 + -B # 忽略空白行 + -w # 忽略空白字符 + -u # 使用"统一格式”显示,易于生成补丁文件 ### patch ```bash diff -Naur > < -R < # 压缩等级 + -T # 使用多个线程 + -v # 显示详细过程 ### tar + -c # 创建 + -x # 解开 + -v # 显示详细过程 + -f # 指定文件名 + -z # 调用gzip + -j # 调用bzip2 + -J # 调用xz + tar -cvjf shell.tar.bz2 shell/ ### dd + if # input file/device + of # output file/device + bs # one black size + count # count + `oflag=sync` sync ## 磁盘 ### mount + -r # 只读 + -o # 特殊设备 + auto # 开机自动挂载 + noauto # 不自动挂载 + ro # read only + rw # read and write + user # 任意用户可挂载 __/etc/fstab__ [设备/UUID] [挂载点] [文件系统] [参数] 0 0 ### umount ### df + df -hT ### sync ### smartctl -a 全部参数 -H 是否正常 ### parted + -i 列出所有设备的分区信息 + -s 非交互模式 + print 显示当前设备的分区表 + mklabel [gpt/msdos] 创建分区表 + mkpart [part-type] [fs-type] [start] [end] 创建一个分区 `例: mkpart primary ext4 1MiB 1000MiB` + rm [number] 删除指定编号的分区 + resizepart [number] [size] 重调大小 + set [number] [mode] 设置分区标志 + quit `sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%` `sudo parted -s /dev/sdb rm 2` ## 用户 ### sudo + -u # 指定用户 ### useradd + -m # 同时建立主目录 + -g # 指定用户组 + -s # 指定shell ### groupadd ### passwd ### userdel + -r # 删除主目录 ### usermod + -d # 修改主目录 + -e # 修改账号有效期 + -s # 修改shell ### id `/etc/passwd` 登录名:口令:UID:GID:x信息:主目录:shell `/etc/group` + 组名:组口令(一般无):GID:user1,user2,user3 __用户所有组是passwd和groups的并集__ ### newgrp ## 进程 ### ps + aux ### top ### btop ### lsop ### kill + -l # 列出所有信号 ### bg ### fg ### jobs ### nohup nohup [command] & `screen` 主要用于用户开启多个独立的会话(称为"窗口")在这些会话之间可以自由切换而不会中断已经运行的程序 1. **启动一个新的 screen 会话**: screen 2. **列出当前的 screen 会话**: screen -ls 3. **重新连接到一个已存在的会话**: screen -r [会话ID或名称] 4. **分离当前会话**: 在 screen 会话中按 `Ctrl-a` 然后按 `d`。 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 ## 网络 ### ip + ip neigh [OPTIONS] [COMMAND] + ip neigh add [IP] lladdr [MAC] dev [eth0] 添加表项 + ip neigh del [IP] dev [eth0] 删除表项 + ip neigh flush all 清空 _________________________________ REACHABLE:表示邻居设备可达。 STALE:表示邻居设备的条目已过期,但之前是可达的。 DELAY:表示正在等待确认邻居设备是否可达。 PROBE:表示正在积极探测邻居设备是否可达 _________________________________ ### ss + -t # tcp + -u # udp + -n # 以端口号显示 + -l # 列出正在监听的服务 + -p # + pid +` -r # 路由表 + ss -tlunp ### ping ### curl 用于从服务器传输数据或向服务器传输数据,支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SMTP、POP3 等 1. 基本用法 + `curl http://example.com` 访问网页或API + `curl -o output.html http://example.com` 保存响应到文件 + `curl -v http://example.com` 显示详细信息 + `curl -s http://example.com` 静默模式 + `curl -X POST -d "param1=value1¶m2=value2" http://example.com/api` 发送POST请求 + `curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com/api` 发送JSON数据 + `curl -X POST -F "file=@/path/to/file" http://example.com/upload` 上传文件 ### wget `wget [参数] [URL]`一个下载文件的工具,可以使用HTTP代理,所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成 1.特点 + 支持断点下传功能 + 同时支持FTP和HTTP下载方式 + 支持代理服务器 + 设置方便简单 + 程序小,完全免费 2. 参数 > `-V` > `-b` 启动后转后台 > `-O [FILE]` 写入文件 > `-d` debug信息 > `-c` continue继续下 > `-T` 设定响应超时的秒数 > `-r` 递归下载 __example__ + `wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip` 下载单个文件 + `wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080` 以不同的文件名保存 + `wget -c http://www.minjieren.com/wordpress-3.1-zh_CN.zip` 使用wget -c断点续传 + `wget --mirror -p --convert-links -P ./LOCAL URL` 镜像整个网站到本地 + `wget -r -A.pdf url` 使用wget -r -A下载指定格式文件 ## 系统 ### systemctl + 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 + -i # 安装 + -l # 查看版本 + -r # 卸载 ### apt + updata # 更新软件包缓存 + upgrade # 更新已有软件包的最新版本 + install # 下载并安装 + remove # 卸载 + source # 下载源码 + search # 搜索 + depends # 列出依赖 + /etc/apt/sources.list ### 编解码工具 + md5sum md5编码 + sha1sum sha1 + cksum crc + base64 + basenc 各种base64变种 + `--base64url` + `--base32` + `--base16` + `--base2msbf` 二进制 + `echo -n 你好|iconv -t ucs-2be|xxd-ps|sed 's/..../\\u&/g` unicode码 ## 其他 >>>>>>> Stashed changes