起步
-
查看服务器运行了哪些程序
$ ps -ef $ ps -ef | grep uwsgi $ ps -ef | grep django $ ps -ef | grep tornado
-
查看运行的程序
$ netstat -tunlp $ netstat -tunlp | grep 80 80:http默认端口 8080:自定义端口 3306:mysql数据库默认端口 443:https默认端口 6379:redis数据库默认端口 22:ssh远程连接服务器默认端口
-
查看定时任务
$ crontab -l
linux基本命令
-
cd 进入上次访问目录
$ cd -
-
mkdir -p 递归创建目录
$ mkdir -p /a/b/c1 /a/b/c2 $ mkdir -p /a/b/{c1,c2} # 批量创建 $ mkdir -p a/b/{1..7} # 批量迭代创建
-
重定向 <<
$ cat >> q.txt << EOF >> 第一行 >> 第二行 >> EOF
-
cp 备份
$ cp nginx.conf nginx.conf.old
-
重命名
$ mv nginx.conf.old nginx.conf
-
查看当前系统 alias 别名
$ alias
-
find 查找
$ find / -type f -name "python" -size +15M # 参数:[type:f 普通文件 d 文件夹]
-
管道符和grep
# 过滤settings.py有价值信息(仅查看) $ cat ./settings.py | grep -v "^#" | grep -v "^$" # 参数:-v,取反 $ grep -v "^#" ./settings.py | grep -v "^$" # grep加引号,支持正则 $ cat /etc/passwd | grep -i root # 参数:-i 忽略大小写
-
sed文本编辑器
# 过滤settings.py有价值信息(修改) $ sed -i "/#/d" nginx.conf # 删除行:sed -i '/匹配的规则/d' 路径 $ sed -i "/^$/d" nginx.conf # 取出IP地址的命令:sed 's/替换签到的内容/替换后的内容/g' $ ifconfig | sed -n '2p' | sed 's/.*inet//g' | sed 's/netmask.*//g' # 查看2-4行 $ sed -n '2,4p' nginx.conf
-
awk切割
# 取出IP地址的命令:awk -F '指定分隔符,默认空格' 'NR==行号 {print $列号}' $ ifconfig | awk 'NR==2 {print $2}' $ ifconfig | awk -F ' ' 'NR==2 {print $2}'
-
du 查看文件夹大小
$ du -sh /etc/ # 文件夹总大小 $ du -h /etc/ # 文件详情大小,h表示带Kb、Mb单位
-
top 系统监视器
$ top
-
free查看内存、交换内存
$ free -m # 参数m,以Mb为单位显示
-
ps 查看进程
$ ps -ef # 查看所有进程 $ ps -ef | grep "vim" # 过滤进程 $ kill PID # 杀死进程 $ kill -9 PID # -9 强制 $ pkill -9 nginx # 强制杀死nginx进程
-
netstat 查看网络
$ netstat -tunlp # 参数:t:tcp、u:udp $ netstat -tunlp | grep 80 # 过滤80端口是否运行
-
history查看指令的历史记录
$ history $ !77 # !+行数,运行当前行的历史指令
-
tail动态检测日志
$ tail -f log.txt
-
ln软连接:连接文件 或 文件夹
$ ln -s /opt/ ./my_opt # ln -s 目标文件/文件夹绝对路径 软连接后的路径
-
vim指令
$ d+G # 清空光标以下的所有内容
单引号与双引号
-
单引号
$ echo '$PATH' # 内部仅仅识别成字符串 >> $PATH
-
双引号
$ echo '$PATH' # 内部可以识别特殊字符 >> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
用户
-
添加
$ useradd 用户名 # 创建了一个用户在/etc/passwd,且创建了一个同名的组/etc/group $ passwd 用户名 # 添加密码
-
查看
$ id 用户名 >> uid=0(root) gid=0(root) 组=0(root) $ ll >> -rw-r--r--. 1 root root 115 12月 21 03:19 a.txt >> 读写执行权限 文件连接数 用户 组 大小 时间 文件名
-
删除
$ userdel -rf 用户名 # 删除用户且删除家目录
-
切换
$ su - root # 参数:- 完全的环境变量切换
权限
-
sudo
$ vim /etc/sudoers # 修改配置文件 $ visudo # 修改配置文件,提供了语法检测(推荐) >> ## Allow root to run any commands anywhere >> root ALL=(ALL) ALL >> xjn ALL=(ALL) ALL # 新增用户
-
文件权限
# - rw- r-- r-- . 1 root root 115 12月 21 03:19 a.txt # 类型 用户 组 其他 文件连接数 user group 大小 时间 文件名 # 类型:-文件,d文件,l软连接
-
chmod 修改权限
$ chmod u+r $ chmod g-w $ chmod o+r,o+w,o+x $ chmod 000 # --- --- --- $ chmod 777 # 421 421 421
-
chown 修改拥有者
$ chown root 文件
-
chgrp 修改拥有组
$ chgrp root 文件
DNS
-
配置DNS域名服务器
$ vim /etc/resolv.conf nameserver 192.168.199.1 # 域名解析服务器地址 nameserver 119.29.29.29 # 腾讯 nameserver 223.5.5.5 # 阿里 nameserver 223.6.6.6 # 阿里
-
域名查找
$ yum -y install bind-utils # 依赖包 $ nslookup www.baidu.com # 域名查找
-
配置本地host
$ vim /etc/hosts
systemctl命令管理服务
-
centos7:systemctl
$ systemctl start redis # 开启 $ systemctl status redis # 状态 $ systemctl restart redis # 重启 $ systemctl stop redis # 停止 $ systemctl enable redis # 开机自启 $ systemctl disable redis # 禁止开机自启
-
centos7以下:service
$ service redis start
PATH环境变量
-
查看安装路径
$ which python >> /usr/bin/python
-
查看环境变量
$ echo $PATH >> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin # 从左往右依次找
-
配置环境变量
$ vim /etc/profile # 全局环境变量 $ PATH="/opt/python3.7.9/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin" # 新增环境变量,在字符串前增加新的路径,以:分隔 $ source /etc/profile # 生效 $ which python3 # 检测 $ which pip3
tar解压缩
-
命令
""" tar 命令 -z 调用gzip命令,对文件压缩 -c 打包 -x 解包 -v 显示过程 -f 必须写在参数结尾,指定压缩文件名字 """
-
注意
# 最好要用相对路径
-
打包
$ tar -cvf all.tar ./* # tar -cvf 打包名称 被打包的文件的相对路径
-
解包
$ tar -xvf all.tar ./ # tar -xvf 解包名称 存放路径
-
压缩
$ tar -zcvf all.tar.gz ./* # tar -zcvf 打包名称 被打包的文件的相对路径
-
解压
$ tar -zxvf all.tar.gz ./ # tar -zxvf 解包名称 存放路径 $ tar xf 压缩文件 # 通用
zip解压缩
- unzip 文件路径
定时任务
-
编辑
$ crontab -e # 命令存储到的临时路径:/var/spool/cron/root $ vim /etc/crontab """ * * * * * 命令的绝对路径 分 时 日 月 周 命令的绝对路径 0-59 0-23 1-31 1-12 0-6 命令的绝对路径 *:每一个 ,:多个,如 1,3,5 -:几到几,如 1-5 代表 1,2,3,4,5 /:每几个,如 0-12/2 代表 0-12点的每两个小时,如 */5 代表 每5分钟 """ $ 0 1 * * * /usr/bin/rm /tmp/* # 必须用绝对路径,因为crontab环境变量可能不够全
-
查看
$ rontab -l
-
删除
$ sed -i '/tmp/d' /var/spool/cron/root # sed -i '/匹配的规则/d' 路径