原文链接
基础安装
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
|