
原文链接
基础安装
sudo yum install epel-release |
命令行Tips
进程及端口
netstat -ap | grep 端口号 netstat -ntlp top -p 进程ID:查看进程的实时情况,包括内存大小,内存占用率、CPU占用率,运行时间 cat /proc/ 进程ID /status :查看进程详细信息,包括线程数,线程名称,线程状态,占用内存大小 pstree -p 进程ID:查看线程的进程数以及进程ID lsof -i :端口号 lsof -i -n -P | egrep ':8000.+ESTABLISHED' lsof -i -n -P | egrep -c ':8000.+ESTABLISHED' kill -s 9 进程ID |
查找与统计
ls -lR | grep "^-" | wc -l wc -l: 统计行数 grep -c "词语" grep 字符串 文件名 grep ^字符串 文件名 grep [0-9] 文件名 grep 字符串 -r 目录 fdupes:快速查找重复文件 find / -name filename find / -name '*.txt' find / -mmin -60 find / - type d -mtime -1 |
文件操作
tar -czvf 结果. tar .gz 目标/ tar -cjvf 结果. tar .bz2 目标/ zip *.zip file zip -r *.zip file dir zip -e 结果.zip 目标 xz -d *. tar .xz tar xvf *. tar tar zxvf *.tgz tar -xjf tar .bz2 gunzip *.gz tar -xzf *. tar .gz cp 文件1 文件2 cp -r 目录1 目录2 cp -a 目录1 目录2 split -b 1024m cat filename | more cat . /test .conf >> /etc/supervisord .conf sudo bash -c 'cat ./test.conf >> /etc/supervisord.conf' 软连接: ln -s 源 目的地 软连接可以给目录创建,如果删除了对源文件不会有影响 硬连接: ln -d 源 目的地 硬连接不能给目录创建,对连接做的更改会影响源文件,只能在同一文件系统中创建 mkdir -p path /2 mkdir -pv path/{path1,path2} mkdir - v a+wt path diff 文件1 文件2 sdiff 文件1 文件2 find *.txt - exec sh -c "iconv -f GBK -t UTF8 {} > change.{}" \; |
远程ssh
ssh -keygen -t dsa yum install openssh-clients scp 用户名@地址:远程路径 本地路径 scp 本地路径 用户名@地址:远程路径 PubkeyAuthentication yes AuthorizedKeysFile . ssh /authorized_keys PasswordAuthentication no service sshd restart sshd:IP |
包管理
dpkg -i *.deb apt-cache show 包名 sudo apt-get clean sudo apt-get autoclean rpm -ql 包名 |
磁盘管理
sudo fdisk -lu sudo fdisk /dev/sdb sudo mkfs -t ext4 /dev/sdb sudo df -lh sudo mount -t ext4 /dev/sdb /mydata vim /etc/fstab 中添加 UUID=硬盘的UUID /挂载位置 ext4 defaults 0 0 sudo du -h -d 1 /path |
用户管理
sudo useradd -s /bin/bash -d /home/username -m username sudo passwd username vim /etc/sudoers 修改如下内容 root ALL=(ALL:ALL) ALL username1 ALL=(ALL:ALL) ALL username2 ALL=NOPASSWD: /usr/bin/git cat /etc/passwd |
系统相关
lsb_release -a // 查看系统信息 echo $HOSTTYPE // 查看系统位数 cat /proc/cpuinfo cat /etc/issue // Debian系列查看系统版本 cat /etc/redhat-release // redhat系列查看系统版本 sudo apt-get install update-manager-core sudo do -release-upgrade shutdown -h now shutdown -r now strace + 命令: 这条命令十分强大,可以定位你程序到底是哪个地方出了问题 sudo dd if = /dev/zero of= /swapfile bs=1024 count=500000 sudo mkswap /swapfile sudo chown root:root /swapfile sudo chmod 0600 /swapfile sudo swapon /swapfile |
防火墙
service iptables status vim /etc/sysconfig/iptables service iptables restart |
其它工具
supervisor
进程监控工具,apt-get install supervisor
进行安装,默认的监控配置都放在/etc/supervisor/conf.d
里面,配置文件语法如下:
[group:fenzu] programs:一个进程名,另一个进程名 [program:去一个进程名称] process_name=%(program_name)s_%(process_num)02d directory= /home/ ... command =python manage.py runserver .... autostart= true autorestart= true startretries=3 user=root numprocs=8 redirect_stderr= true stdout_logfile= /var/log/ ... |
常用操作
CURL
curl -o a.txt url curl -O url |
FTP
Crontab定时任务
crontab -e 格式如下: 第1列:分钟 第2列:小时 第3列:日 第4列:月 第5列:星期 第6列:命令 其中,每一列可以逗号和小横线表示特殊的意义,比如 3,15 8-11 * * * 命令 * 23 * * * 命令 0 * /1 * * * 命令 需要注意的是coontab是不会自动加载环境变量的哟,所以有时候发现命令没有被执行,可能是这个原因 cron .* /var/log/cron .log service rsyslog restart |
其他命令
cd -: 返回上一次的目录,真他妈实用 history :查看历史命令,如果需要查看命令执行时间,需要先 export HISTTIMEFORMAT= '\%F \%T ' tzselect:更改时区 alias python=python3 alias pip=pip3 alias run8000= 'python manage.py runserver 0.0.0.0:8000' ifdown eth0 ifup eth0 echo $RANDOM echo $RANDOM / 28 | bc echo $RANDOM % 28 | bc |
Shell Script
数据结构
VAR2=${VAR:-haofly} VAR2=${VAR/. tar .gz} length=$( |
流程控制
if 语句: -z:为空 -n:不为空 -gt:大于 if [ ! -f "$filename" ]; then touch "$filename" fi if [[ ! -s filename ]]; then echo 'a' fi |
特殊符号
[[]]:双中括号,之间的字符不会发生文件名扩展或者单词分割 (()):双小括号,整数扩展,其中的变量可以不适用$符号前缀 $?:上一条命令的退出码 |
日期处理
date + "%s" date + "%m-%d-%y" date + "%T" |
随机数
$RANDOM # 生成一个随机数
特殊操作
. /etc/*.conf # 导入配置文件,这样配置文件里面的变量就可以直接使用了
find ./ -name "*.log" -mtime -1 | which read line; do tail -n 5 "$line" > ~ /bak/ "$line" ; done while read line do 语句 done -F 参数将行做分割,例如: ps | awk -F ' ' '\{print $1\}' -n 输出第几行,例如: ps | sed -n '1p' ps | grep python | awk -F ' ' '\{print $1\}' | xargs kill date +\%Y-\%m-\%d |