shell常用命令
- cd命令 进入某个目录 - cd ~ : 等价于cd - cd ~user : cd ~后跟用户名,直接返回用户的home目录 - cd /: 直接返回根目录 - cd "$var": var=变量, 变量里存路径,要加引号防路径中的空格 - ls命令 [参数] [过滤项] 查目录文件 - ls -l: 详细列表(long format) - ls -a: 显示所有文件(包括隐藏文件) - ls -h: human(人性化) - ls -t: 按时间排序,倒序 - ls -r: 反转,比如ls -l是按字母顺序正序,ls -lr就变成按字母顺序倒序 - ls -R:递归列出子目录 - ls -d:只显示目录 - ls -S: 按大小倒序 - ls -ltr: 详细信息,时间正序 - ls -lt: 详细信息,时间倒序 - cp 命名 复制文件 - cp a.txt b.txt : 复制a.txt文件,并将复制的新文件a.txt命名为b.txt, 若b.txt本身就存在,则直接用a.txt的内容进行覆盖 - cp -i a.txt b.txt: 复制a.txt文件,但在覆盖之前会确认下是否要覆盖 - cp -n a.txt b.txt: 复制a.txt文件,但如果存在b.txt,则跳过不覆盖 - cp - -backup a.txt b.txt: 复制a.txt文件,如果存在b.txt, 则对b.txt进行备份,备份后再进行覆盖 - mv 命令 移动文件(原文件还在) - mv -i a.txt b.txt: 覆盖前询问 - mv -n a.txt b.txt: 目前不存在就移动,存在则跳过不移动 - mv -f a.txt b.txt: 强制覆盖(不加f也是覆盖) - mv -b a.txt b.txt: 覆盖前原文件会备份,再移动 - rm 命令 删除文件 - rm -i a.txt: 删除前询问 - rm -f a.txt: 强制删除 - rm -r a.txt: 递归删除目录以及文件 - rm -d empty: 删除空目录,非空目录报错 - mkdir 创建空目录 - mkdir dir1: 创建目录 - mkdir -p dir1/dir2/dir3: 递归创建目录 - mkdir -v dir1: 创建目录时打印出详细信息 - mkdir dir1 dir2 dir3: 创建多个目录 - rmdir 删除空目录 - rmdir dir1: 删除空目录,成功,非空目录,失败 - rmdir -p dir1/dir2/dir3: 递归删除目录,遇到非空目录则报错 - rmdir -v dir1: 删除目录并输出详细过程 - file f 查看文件类型 - cat 打印文件 - cat -A a.txt: 显示文件所有字符(包括隐藏字符) - cat -s a.txt: 打印时压缩空行 - cat a.txt:默认输出到屏幕上 - cat > a.txt: 键盘输入写文件,ctrl+d保存 - cat -n a.txt: 输出行数 - tail 命令 — 查看文件的尾部信息 - tail a.txt: 默认显示最后10行 - tail -n 20 a.txt: 最后20行 和 tail 20 a.txt等价 - tail -n +50 a.txt: 从50行开始到末尾 - ps命令 查看进程 - ps -aux : 查看所有进程, 基本信息为pid,cpu,mem等, 可以与ww组合,ww不限制宽度 - -a : 查看所有终端进程 - -x: 与a放在一起可以查看所有进程 - -u: user, 输出更符合用户习惯 - ps -ef: 查看所有进程,基本信息为pid、ppid、终端id等, 可以与ww一起使用,ww不限制宽度 - -e: 所有进程 - -f: 完整格式 - kill 命令: 向进程发信号,默认发信号15 - 日常用法 - kill 123: 默认给pid=123的进程发信号15 - kill -s SIGTERM 123:根据信号名称发信号, s 可不写, 等价kill -SIGTERM 123 - kill -n 15 123: 给pid=123的进程发送信号15, n可不写, 等级kill -15 123 - 常用信号 - SIGHUP 1 :终端挂断, 日常被用作配置重载等(行业约定),比如nginx的配置重载,就是nginx接收到hup信号后执行配置重加载 - SIGINT 2:ctrl +c触发的,中断, 一般是用户收到ctrl + c产生 - SIGOUT 3: - SIGKILL 9: 强制终止, 进程无法捕获 - SIGTERM 15: 默认信号,优雅退出 - SIGCONT 18: 继续运行(配合stop) - SIGSTOP 19: 暂停进程(ctrl + z发的,不能被捕获) - pkill 命令: 和kill一样,发送信号,pkill可以按照进程名去发送消息, 但pkill需要注意名字接近的,避免误伤 - pkill -f : 不加-f只匹配进程名,加了 -f 才匹配整个命令行参数 - pkill -u root: 杀root用户所有进程 - pkill -u root -f "python": 杀root的python的进程 - top 命令: 实时查看系统资源和进程状态 - top -d 1 : 延迟时间间隔, 每隔1秒刷新一次 - top -p 12345 : 只盯着 PID=12345 - top -u nginx : 只看nginx用户 - top -b -n 1 : 只输出一次 n是刷新次数 -b 是batch mode(批处理模式) - top -b -n 1 > a.txt : 问题快照,将top刷新一次的数据重定向到a.txt - 实时参数 - P : 按cpu排序(默认) - M: 按内存排序 - T: 按内存cpu时间排序 - k: 杀进程(输入pid→信号) - u: 只看某个用户 - c: 显示完整命令行 - s: 改刷新间隔(秒) - df 命令 disk free 用来查看文件系统级别的磁盘空间使用情况 - df : 默认输出磁盘使用情况,但默认是字节,非人类友好 - df -h : 人类可读,会将单位转换成K/M/G/T等单位 - df -T: 显示文件系统类型 - df -i: 看inode - df -a: 显示所有包括伪文件系统 - free 命令 内存占用 - free -m: 以M单位输出 - free -g: 以G单位输出 - free -s 8: 每过8秒重复打印一次 - free -h:符合人类习惯输出 - systemctl 命令:systemd系统的核心命令控制工具 - systemctl start nginx: 启动nginx服务 - systemctl stop nginx: 关闭nginx服务 - systemctl restart nginx: 重启nginx服务 - systemctl reload nginx: 重载配置(接收hup信息执行配置重载) - systemctl status nginx: 服务状态,正常运行会弹running - journalctl 命令: systemd系统自带的日志查询工具 - journalctl -f : 持续跟进,类似于tail -f - journalctl -n 50: 最近的50行 - journalctl -u nginx: nginx日志 - journalctl -u nginx -f : 持续跟进nginx日志 - journalctl --since "2026-07-30" : 查看7月30号的日志 - 绝对时间 journalctl --since "2026-07-30 14:05" 查看7月30号 14:05开始的日志 - 自然语言 journalctl --since today : 查看今天的日志, today, yesterday, tomorrow, now - 英文ago句式 journalctl --since "1 hour ago": 查看1小时以前的日志 - -/+ 后跟s m h d w month year来表示单位 journalctl --since -1h: 1小时以前 - journalctl -S "2026-07-30" :查看7月30号的日志 --since等价于 -S