Daimon Blog

山在那里

Linux Cheatsheet

我的linux常用命令汇总。

iproute2工具替代net-tools工具集

安装

yum install iproute2
用途 net-tool(被淘汰) iproute2
地址和链路配置 ifconfig ip addr, ip link
路由表 route ip route
邻居 arp ip neigh
VLAN vconfig Tip link
隧道 iptunnel ip tunnel
组播 ipmaddr ip maddr
统计 netstat ss

用法

ss -h

# 网络连接统计
ss -s

# 所有打开的端口
ss -lp

# 看所有的socket连接(tcp: -t, udp: -u, raw: -wa, unix: -xa)
ss -a

rsync文件同步

常用同步命令

rsync -rzva --delete --progress -e ssh root@xxx.com:/data /data/bak/bak01/

cpupower 调节cpu频率

参考:

关于cpu频率,目录在这里

/sys/devices/system/cpu/cpu23/cpufreq

调节主要用cpupower

cpupower frequency-info --policy # 看当前的策略
cpupower monitor # 看当前频率
cpupower frequency-set -g powersave # 设置为 节能模式
cpupower frequency-set -g performance # 设置为性能模式
cpupower help frequency-set # 看帮助

调节要看效果,一方面是节能,另一方面是降温:)

yum install lm_sensors
sensors-detect
sensors

关闭cpu

lscpu
echo 0 > /sys/devices/system/cpu/cpu3/online # 关
echo 1 > /sys/devices/system/cpu/cpu3/online # 开

写成批处理

for i in 3 15; do echo 0 > /sys/devices/system/cpu/cpu$i/online; done

for循环 / if 分支

几个例子

  • 文件遍历

    for i in *.redis;do tar zcf $i.tgz $i --remove-files;done
  • 值遍历

    for i in 'a' 'b' 'c';do echo $i;done
  • 文件内容遍历

    while read p; do
    ./cassandra-loader -f /data/prd/DataExchange/$p.csv -host localhost -schema "xxx.xxx(xxx, xxx)" -delim "," -numThreads 20
    done <mobile.list
  • 数值遍历

    for ((i=1;i<8;i++)); do
    echo $i
    done

关于if,这个文章很好

https://www.cnblogs.com/the-capricornus/p/5009976.html

加载ntfs分区

yum install ntfs-3g
mount -t ntfs-3g /dev/sdb1 /mnt/win1

lvm

lvm很好用。 这个文章不错:

http://blog.51cto.com/chrinux/1186700

自动生成重复项

$ echo a{1,2,3,4}
a1 a2 a3 a4

关于cron.daily

看这里就明白了:

cat /etc/anacrontab

实际发生的在这里:

ls -l /var/spool/anacron/

有时候anacron会工作不正常。比如该执行的任务没执行。这时可以控制台运行下看看卡在哪里。

$ anacron -d -t /etc/anacrontab -f -n

Anacron started on 2018-05-30
Job `cron.daily' locked by another anacron - skipping
Job `cron.weekly' locked by another anacron - skipping
Job `cron.monthly' locked by another anacron - skipping
Normal exit (0 jobs run)

看我这个就卡住了。

find 与 chmod 配合

find . -type d -exec chmod 777 {} \;

btrfs

root分区挂掉

http://blog.51cto.com/oybw88/1369016

alternative 安装一个软件的多个版本

http://www.cnblogs.com/killkill/archive/2010/08/23/1806468.html

alternatives --install /usr/bin/java java /usr/share/java/8u171-b11/jdk1.8.0_171/bin/java 400
alternatives --display java
alternatives --config java

ssh 免密登录linux执行命令

https://www.cnblogs.com/sparkdev/p/6842805.html

# 自动生成 key
cat /dev/zero | ssh-keygen -q -N ''

# 机器互信
sshpass -p <pass> ssh-copy-id -i /root/.ssh/id_rsa root@<server>

sed -i '1i\StrictHostKeyChecking no' /root/.ssh/config

ssh -i <identity_file> <user>@<host> 'cmd'

ssh 保持连接

vi ~/.ssh/config

ServerAliveInterval 30

ps 的各种操作

# 内存占用排序
ps -eo pid,ppid,rss,%mem, %cpu, pmem,pcpu,vsize,args |  sort -k 3 -r -n

硬盘检测

yum install smartmontools
smartctl -H <dev>

更新smartctl database

sudo /usr/sbin/update-smart-drivedb

awk 神器

https://coolshell.cn/articles/9070.html

http://wiki.bash-hackers.org/syntax/quoting

监控 io

  • iotop
  • pidstat

硬盘由ide改为ahci

mkdir /boot/ahci
core=`uname -r`
mkinitrd --preload ahci /boot/ahci/initramfs-$core.img $core

xz 目录压缩

xz的压缩率极高。默认参数能压到1/3左右。

tar -cf - foo/ | xz -cT0 - > foo.tar.xz 

XZ_OPT=-T09 tar cvvJf 1960.csv.aa.tar.xz.2 1960.csv.aa

# 这是移除文件
XZ_OPT=-T09 tar cvvJf 1960.csv.aa.tar.xz.2 --remove-files 1960.csv.aa

密码相关

创建密码

openssl passwd -1 -salt xyz  yourpass

修改密码

echo "username:password" | chpasswd 

在线增加硬盘

https://linoxide.com/linux-how-to/add-new-disk-centos-7-without-rebooting/

lvm / xfs格式

pvcreate /dev/sde
vgextend centos /dev/sde
lvextend -l +100%FREE /dev/mapper/centos-home
xfs_growfs /dev/mapper/centos-home

创建内存盘

mount -t ramfs none /ram
mount -t ramfs none /ram -o maxsize=2000 # 限定最大使用内存为2m的ramdisk

ntp对时

yum install ntpdate
ntpdate cn.pool.ntp.org

以上是手工对时。也可直接安装ntp,自动对时

yum install ntp
systemctl enable ntpd && systemctl start ntpd

注意看看crontab -l 中是否有对时任务

  0 12 * * * /usr/sbin/ntpdate cn.pool.ntp.org

xfs shrink with lvm

http://yallalabs.com/linux/how-to-reduce-shrink-the-size-of-a-lvm-partition-formatted-with-xfs-filesystem/

mdadm

https://www.jianshu.com/p/5557b6172b97 http://blog.51cto.com/molinux/516008

hdparm

硬盘休眠

https://wiki.archlinux.org/index.php/hdparm

smartctl -i -n standby /dev/sdd # 查询休眠状态(不会唤醒硬盘)
hdparm -y /dev/sdd # 硬盘进入standby状态

设置自动休眠,参考这里:

https://wiki.archlinux.org/index.php/Udev

Centos 7 and Redhat 7 by defaults uses biosdevname rpm -qi biosdevname-0.5.0-10.el7.x86_64

换腾讯源

https://mirrors.cloud.tencent.com/help/centos.html https://cloud.tencent.com/document/product/213/8623

base

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo

epel

wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo

若是腾讯内网服务器,地址换为:

mirrors.tencentyun.com

电源管理

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/pdf/power_management_guide/Red_Hat_Enterprise_Linux-7-Power_Management_Guide-zh-CN.pdf

ssh安全

https://www.ibm.com/developerworks/cn/aix/library/au-sshlocks/index.html

Port 22960 
LoginGraceTime 30 
MaxAuthTries 3 
Protocol 2 
PermitRootLogin no

调试sshd慢的方法

systemctl stop sshd
/usr/sbin/sshd -d

这样就可以看sshd的日志了。

如果发现是慢在pam相关问题,则继续排查 /etc/pam.d/sshd 一行一行的注释,看看是哪个策略慢。

看是不是有人在攻击

tail -f /var/log/secure

如果有,就封ip

iptables -I INPUT -s 211.1.2.1 -j DROP

解封

iptables -L --line-numbers
iptables -D INPUT 1

用iptables封不太好。

可以用hosts.allow/hosts.deny来处理

https://www.cnblogs.com/panblack/p/secure_ssh_auto_block.html

端口扫描

sudo nmap   -sS 192.168.1.1/32

Nmap scan report for 192.168.1.2
Host is up (0.0035s latency).
Not shown: 993 closed ports
PORT    STATE    SERVICE
20/tcp  filtered ftp-data
21/tcp  filtered ftp
22/tcp  filtered ssh
23/tcp  open     telnet
80/tcp  open     http
179/tcp filtered bgp
443/tcp open     https
MAC Address: 68:A8:28:44:2D:D8 (Huawei Technologies)

selinux

getenforce
setenforce

vi /etc/selinux/config
SELINUX=disabled

sysctl 常用配置

vm.max_map_count=1048575 # 忘了
net.ipv4.ip_forward=1 # 允许端口转发
net.ipv6.conf.all.disable_ipv6 =1 # 禁ipv6
net.ipv6.conf.default.disable_ipv6 =1

生成随机密码

openssl rand -base64 15

文章分类目录