Linux(以 CentOS7.2 为主)
装机必备
- yum 源
- docker
- docker-compose
- python2.7 与 python3.6 兼容
- 防火墙
- jdk
- gcc
- sudoers 与 755
国内 yum 源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo /etc/yum.repos.d/
yum clean all
yum makecache
https://www.runoob.com/linux/linux-yum.html
http://mirrors.163.com/.help/centos.html
防火墙
- centOS7 永久关闭防火墙(防火墙的基本使用)
# 查看状态
systemctl status firewalld.service
# 关闭防火墙
systemctl stop firewalld.service
# 开启防火墙
systemctl start firewalld.service
# 设置开机启动
systemctl enable firewalld.service
# 禁止开机启动
systemctl disable firewalld.service
- CentOS7 查看和关闭防火墙
firewall-cmd --state
- CentOS 防火墙添加例外端口
# 查看状态
firewall-cmd --state
# 添加 8080 例外端口
# –zone 作用域
# –add-port=8080/tcp 添加端口,格式为:端口/通讯协议
# –permanent 永久生效,没有此参数重启后失效
firewall-cmd --permanent --zone=public --add-port=8080/tcp
# 重新加载
firewall-cmd --reload
jdk 安装
- 解压 jdk-xxx-linux-x64.tar.gz,将解压的 jdk 目录移动到/opt 下
- 编辑
/etc/profile
sudo vim /etc/profile
export JAVA_HOME=/opt/jdk1.7.0_55
# \$PATH 放在结束位置,否则会被系统自带的 openjdk 覆盖
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
- 运行
java -version
得到正确的版本
注意
如果 jdk 是 bin 文件,直接 chmod 755
,然后 ./bin
解压,接下来参考上面的步骤配置环境变量。
chmod 755 jdk-6u27-linux-x64.bin
./jdk-6u27-linux-x64.bin > /tmp/null
tar 命令
# 解压
tar –zxvf xxx.tar.gz
# 压缩
tar –zcvf xxx.tar.gz
或者
# 压缩
zip -r kbase-converter.zip kbase-converter/_ -x "kbase-converter/DATAS_"
用户和组权限 sudoers
- 基本用法
- 创建组
groupadd g_normal
- 创建用户
useradd -g g_normal u_search
- 修改密码
passwd u_search
- 将用户 u_search 加入到 docker 组
# 方法一
groupadd docker
usermod -aG docker u_search
# 方法二
sudo gpasswd -a ${USER} docker
systemctl restart docker
# 查询当前用户所属的所有组
groups
- 文件权限操作
# 改变 filename 的所有者为 xiaoming
chown xiaoming filename
# 改变 filename 所属的组为 root
chgrp root filename
# 改变 dirname 这个目录的所有者是 root
chown root ./dirname
# 改变 dirname 这个目录及其下面所的文件和目录的所有者是 root
chown ‐R root ./dirname
- 设置 sudo
whereis sudoers
chmod -v u+w /etc/sudoers
vim /etc/sudoers
#这个是新用户
u_search ALL=(ALL) ALL
chmod -v u-w /etc/sudoers
scp 传输文件
# 传输文件
scp -r -P 12598 lucy 172.16.9.55:/home/eko_0807/
# 拉取文件
scp -r -P 12598 ekozhan@172.16.9.55:/home/ekozhan/demo.tar.gz /home/eko_0807/
注意
scp
命令和 ssh
命令类似,记住一个,另一个妥妥的
ssh & ssh 免密登录
当前服务器 ip:192.168.1.200
目标服务器 ip:192.168.1.210
ssh -l hadoop 172.16.9.55 -p 12598
或者
ssh -p 5060 eko.zhan@172.16.9.55
设置免密登录
ssh-keygen -t rsa
ssh-copy-id -i id_rsa.pub -p 12598 eko.zhan@192.168.1.210
# 注意修改 sshd_config 中的参数
/etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
查看目录下的文件个数
# 列出目录下所有文件个数(包含子目录文件和子目录)
ls -lR | wc -l
# 列出目录下所有文件个数(仅包含子目录文件)
ls -lR | grep "^d" | wc -l
查目录包含子目录大小
du -hsx \* | sort -rh | head -10
du -h --max-depth=1 .
find 命令
查找文件名称包含 .class
的文件
find . -name '\*.class' -newermt '2017-06-09'
查找文件名称包含 .class
的文件,并将内容写入 /app/ekozhan 文件中
find . -name '\*.class' -newermt '2017-06-09' |xargs -i cp {} /app/ekozhan
统计 java 代码行数
find . -name \*.java |xargs cat|grep -v ^\$|wc -l
find . -type f |xargs cat|grep -v "^\$"|grep -v "^/"|wc -l
find . -name \*.java |xargs cat|grep -v "^\$"|grep -v "^/"|wc -l
find . -name _.htm_ -o -name _.js_ -o -name \*.java |xargs cat|grep -v "^\$"|grep -v "^/"|wc -l
查找所有包含 .png.txt
的文件并删除
find ./ -name '\*.png.txt' |xargs rm -rf
查找所有包含 .png.txt
的文件(忽略大小写)并删除
find ./ -iname '\*.png.txt' |xargs rm -rf
cat 高级用法
查找日志中包含 read time out
的文本,不区分大小写
cat 2018_02_05.stdout.log |grep -i "read timed out"
查找日志中包含 Exception
,不包含 hibernate
filter
stream
的文本
cat 2018_02_05.stdout.log |grep Exception|grep -vi hibernate|grep -vi filter|grep -vi stream
查看日志,从第 80780 行开始,显示 100 行
cat -n 2018_02_05.stdout.log|tail -n +80780|head -n 100
查看日志包含 Exception
的本文,上下 3 行
cat debug.log |grep -C 3 Exception
杀进程
kill -9 `ps -ef|grep java|grep -v grep|grep kbase-conference|awk '{print $2}'`
ps -ef|grep soffice|grep -v grep|awk '{print \$2}'|xargs kill -9
创建软连接
ln -s /mnt/disk0/xiaoi /xiaoi
sudo ln -s /home/ekozhan/Programs/node-v14.15.4-linux-x64/bin/node /usr/local/bin/node
sudo ln -s /home/ekozhan/Programs/node-v14.15.4-linux-x64/bin/npm /usr/local/bin/npm
sudo ln -s /home/ekozhan/Programs/node-v14.15.4-linux-x64/bin/cnpm /usr/local/bin/cnpm
重启关机记录排查
last|grep reboot
history|grep reboot
cat /var/log/messages
CLOSE_WAIT
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
# 客户端连接数量,Connection Refused,最大数 65535
netstat -nat|grep -i 8080|wc -l
crontab 定时任务
crontab -e 0 1 \* \* \* /usr/bin/python3 /home/yogurt/XinhuaSpider.py >> /home/yogurt/spider.out
crontab -e 59 23 \* \* _ rm -rf /tmp/lu_.tmp /tmp/webdav\*.log
crontab -e 30 0 \* \* _ find /tmp/lu_.tmp -ctime 0 -exec rm -rf {} \;
修改时间
date -s "2015-08-11 13:06:30"
clock -w
源码安装样例
wget http://memcached.org/latest
tar -zxvf memcached-1.x.x.tar.gz
cd memcached-1.x.x
./configure && make && make test && sudo make install
Debian 与 CentOS 语法差异
Debian/Ubuntu: apt-get install libevent-dev
Redhat/Centos: yum install libevent-devel
gcc
yum -y install gcc
hostname 修改
- hostname
- hostnamectl set-hostname ibotplus
- vim /etc/hosts
python2.7 与 python3.6 兼容
CentOS7.2 安装 pip 以及升级
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
python2.7 与 python3.6 兼容
How to Install Python 3 on CentOS 7
推荐使用 conda
Docker 安装
详见 docker
ulimit
/etc/security/limits.d/90-nproc.conf
Ubuntu 上修改 ulimit 还有些小复杂
linux ulimit 修改文件最大数(ubuntu 20.04、CentOS)
查看版本
uname -a
cat /etc/redhat-release
alias
添加命令并永久生效
alias ll='ls -a'
vim /root/.bashrc
source /root/.bashrc
shell 脚本编码问题
关于 linux 中执行 shell 文件出现 ^M 的问题,vim里查看编码是否是 [dos], 如果是,运行:set ff=unix ,保存退出即可
磁盘分区与挂载
fdisk -l
Ubuntu 18.04 磁盘根目录在线扩容 & 修改分区 inode 数量
查询所有连接设备
lspci
Linux系统之lspci命令介绍