====== SHELL 命令 ====== ===== nohup 后台进程 ===== 1指标准输出;2指错误输出,所以写成这样:command 1>output 2>error & ,正常的输出在output文件里,错误的输出在error文件里, command >output 2>error & (1可以省略) 忽略错误输出:command 1>output 2>/dev/null & 忽略标准输出:command 1>/dev/null 2>error & 忽略全部输出:command 1>/dev/null 2>/dev/null & **忽略全部输出** :''command >/dev/null 2>&1 &'' 错误输出和标准输出在一个文件:command 1>output 2>&1 & 错误输出和标准输出在一个文件:command 1>output 2>output & (X这种方式错误) 这样的文件输出,每次运行会覆盖现有的文件,如果我们希望追加而不是覆盖,那么就用>>符号,这样命令就是: command 1>>output 2>>error & 如果想退出窗口乃至退出登录仍然保持程序运行,再加上nohup,形如:nohup command 1>output 2>&1 & nohup sh run.sh 1>run_info.log 2>run_error.log & {{tag>shell}} ===== 查看系统 ===== 显示系统版本 uname -m # armv7l uname -a # 显示所有信息 Linux pi 5.10.17-v7l+ #1414 SMP Fri Apr 30 13:20:47 BST 2021 armv7l GNU/Linux cat /proc/version # Linux version 5.4.0-77-generic (buildd@lgw01-amd64-028) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #86-Ubuntu SMP Thu Jun 17 02:35:03 UTC 2021 ===== 查看IP地址 ===== * 方式一: ''ifconfig | grep "inet " | grep -v 127.0.0.1'' * 方式二:''ifconfig en1'' 有时候是 en0 * 外网地址 ''curl ifconfig.me'' ===== 文件命令 ===== * 查看文件夹 ''%%du -h –max-depth=1 your_dest_dir%%'' * 查看文件夹大小 ''%%du -sh <目录>%%'' (查看目录大小) * 查看文件详细内容 ''%%ls -lht%%'' * 从远程服务器拷贝: ''%%rcp%%'' * 复制到远程服务器: ''%%scp%%'' 查找文件 [[https://www.plesk.com/blog/various/find-files-in-linux-via-command-line/|locating linux files]] find . -name thisfile.txt find /home -name *.jpg find . -type f -empty find ./ -type f -name "*0325*" // 文件名中含有 0325 的文件 查找并删除 find . -type f -name "*.DS_Store*" -exec rm -f {} \; {{tag>文件系统}} ===== TAR 压缩解压 ===== 下面五个参数基本够用,更详细参数移步[[https://www.runoob.com/linux/linux-comm-tar.html|tar 命令详解]] * z : 使用gzip压缩,否则仅仅打包不压缩。 * c : 创建新文件。 * v : verbose 处理过程输出信息 * f : 指定备份文件 * x : 解压 压缩大文件显示进度 # mac tar -cf - questions.sql | pv -s $(($(du -sk questions.sql | awk '{print $1}') * 1024)) | gzip > question.tar.gz # ubuntu tar -cf - questions.sql | pv -s $(du -sk questions.sql | awk '{print $1}') | gzip > question.tar.gz ===== 进程以及命令 ===== 查找 ps -ef #all process ps -fC sshd # sshd 是名字 pgrep -fl ssh* #按名字查找,使用通配符 pgrep -fa mongo* # 显示所有信息!!!!! pgrep mongod #按名字精确查找 ps -aux | grep mongo pgrep -l 列出程序名和进程ID; -o 进程起始的ID; -n 进程终止的ID; 进程控制 * 将任务放在后台运行:''command + &'' * 将任务丢到后台暂停:''ctrl-z'' * 查看后台所有任务状态:''jobs -l'' (会列出 1、2、3序列号) * 将后台的任务拿到前台处理:''fg %jobnumber'' (指序列号,而不是任务id) * 将后台的任务变成运行中:''bg %jobnumber'' * 管理后台当中的任务:''kill -signal %jobnumber'' ''kill -9 '' 可以强制终止一个进程(是数字9,而不是字母g) 查看命令的目录 whereis ttyd ttyd: /usr/local/bin/ttyd {{tag>进程}} ===== 查看用户 ===== 用户ID ''%%id -u %%'' ===== 定时任务 ===== $ crontab -l #查看任务 $ crontab -e #编辑任务 $ crontab -r #删除任务 语法规则: 分钟(0-59) 小時(0-23) 日期(1-31) 月份(1-12) 星期(0-6)0和7都代表星期天 查找当前目录中三天前的文件并删除 ''find ./ -mtime +3 | xarg rm'' ===== 隐藏文件夹 ===== 主要是mac系统上使用。快速命令,打开访达窗口,然后 **⌘ + ⇧ + .** 就可以隐藏/显示。 //显示隐藏文件 defaults write com.apple.finder AppleShowAllFiles -bool true //不显示隐藏文件 defaults write com.apple.finder AppleShowAllFiles -bool false ===== systemctl ===== # 列出所有已经加载的systemd units systemctl systemctl | grep docker.service # 列出所有service systemctl list-units --type=service systemctl --type=service #列出所有active状态(运行或退出)的服务 systemctl list-units --type=service --state=active # 列出所有正在运行的服务 systemctl list-units --type=service --state=running systemctl list-units --type service --state running,failed systemctl list-unit-files --state=enabled ===== Htop ===== 交互命令 (([[https://cloud.tencent.com/developer/article/1115041|htop 详解]])) * shift + m 按内存大小排序 * M:按照内存使用百分比排序,对应MEM%列; * P:按照CPU使用百分比排序,对应CPU%列; * T:按照进程运行的时间排序,对应TIME+列; * K:隐藏内核线程; * H:隐藏用户线程; * shift + h 收缩线程 * q 退出 ===== 端口映射 ===== // 查看已经连接的服务端口(ESTABLISHED) netstat -a // 查看所有的服务端口(LISTEN,ESTABLISHED) netstat -ap // 查看指定端口,可以结合grep命令: netstat -ap | grep 8080 // 也可以使用lsof命令: lsof -i:8888 // 若要关闭使用这个端口的程序,使用kill + 对应的pid kill -9 PID号 ===== CURL RESTfull ===== 用CURL 发送 post 命令 参数 -d 指定数据 curl -X POST -d "name=John&age=30" https://example.com/api 还可以指定数据类型 curl -X POST -H "Content-Type: application/json" -d '{"name":"John","age":30}' https://example.com/api 发送邮件 curl --url "smtps://smtp.example.com:465" \ --ssl-reqd \ --mail-from "sender@example.com" \ --mail-rcpt "recipient@example.com" \ --user "username:password" \ --upload-file - <