CentOS(Community Enterprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux(RHEL)依照开放源代码规定发布的源代码所编译而成。
查看系统信息
uname -a
hostnamectl
cat /etc/redhat-release # 系统详细信息
- 查看多少个CPU
grep 'model name' /proc/cpuinfo | wc -l
软件安装
CentOS7配置阿里云yum源和EPEL源
以centos7为例安装阿里云yum源
cd /etc/yum.repos.d/
mkdir repo_bak
mv *.repo repo_bak/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
## ready to install software
EPEL源
yum list | grep epel-release
yum install -y epel-release
yum 安装
sudo yum install elasticsearch
rpm 命令
sudo rpm -ivh kibana-4.6.6-x86_64.rpm // 安装后通过 sudo service kibana start 来启动
查看安装程序路径
sudo rpm -ql kibana // 查看到安装在了/opt/kibana
sudo rpm -qa|grep jdk // 查看安装了哪些jdk
sudo rpm -ql java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64 //查看具体包的安装路径
开机启动服务
systemctl start xxx.service #启动
systemctl stop xxx.service #停止
systemctl enable xxx.service (开机启动)
systemctl disable xxx.service (禁止开机启动)
systemctl enable docker # 开机启动docker
查看服务日志
如果是通过systemd启动,可使用如下命令
journalctl -u kubelet
ssh 登录
ssh-copy-id -i id_rsa.pub osboxes@192.168.1.186
延长SSH会话
编辑
vim /etc/ssh/sshd_config
ClientAliveInterval 30 #客户端每隔多少秒向服务发送一个心跳数据
ClientAliveCountMax 1800 #客户端多少秒没有相应,服务器自动断掉连接
重启sshd服务
service sshd restart
修改主机名称
- 方式一 hostnamectl set-hostname sino-dev
- 方式二
vi /etc/sysconfig/network
NETWORKDING=yes HOSTNAME=SINO-DEV
通过service network restart
重启网络服务生效。查看运行hostname
开放端口
$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --reload
netstat 使用
查看某个服务是否在运行
sudo netstat -aple | grep nginx
只查看tcp或者udp的connections需要添加-t参数:
sudo netstat -nplt
更多更实用的netstat命令参考:Linux netstat 命令示例
查看centos 版本
cat /etc/centos-release
设置环境变量
export KAFKA_HOME=/home/osboxes/kafka_2.10-0.10.0.1
echo $KAFKA_HOME
在 /etc/profile 文件中设置的变量是全局变量。而 .bashrc文件(在用户的家目录下)则只对当前用户有用。~/.bashrc、~/.bash_file 是当前用户目录下的配置信息。修改后用 source 命令更新。
SELinux
getenforce # 查看是否开启
sudo setenforce 0 # 关闭
sudo sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config # 永久关闭
磁盘空间
df -h
free
查看目录所占空间大小
du -smh *
统计文件夹下面的文件数量
ls -1 | wc -l
grep 搜索文件内容
指定的文件类型中查找 当前子目录中查找:
grep -r abcd *.properties
当前子目录递归查找含有abcd
的*.properties 文件 指定目录及子目录中查找:grep -r 3306 /home/okchem/storage92g/srm/
拷贝整个文件夹
cp -avr /home/vivek/letters /usb/backup
用户和组
/etc/group file that lists all users groups 可以使用cut命令列出来
cut -d: -f1 /etc/group
- 查看当前用户的group:
$ groups
- 查看用户的group:
$ groups root
id -Gn root
- 添加用户到组:
$ sudo usermod -a -G osboxes nginx
添加用户nginx到组osboxesusermod -a -G <groupname> username
添加完成请用groups <username>
来验证 - 获取组的所有用户:
getent group kibana
文件编码
file -i <文件名>
vim --cmd 'set encoding=utf-8' <文件名>
文件权限
通过ls -l 文件路径
获取类似信息:- rw- r-x r- - (数量) userame groupname mtime filename
这里的数量,如果是文件,指的是数据库连接的文件数量, 如果是文件夹暂时不知 🙁
文件权限的信息如下:
- rw- 文件属主的权限
- r-x 文件属组的权限
- r-- 其他用户的权限
文件夹有所不同
- x 进入目录
- rx 显示目录内的文件名
- wx 修改目录内的文件名
修改文件(夹)owner
chown 代表change owner;
chown --help
提供了更详细的信息
sudo chown -R joe:root /ebs # 修改了owner为joe 组为root
sudo chown -R joe /ebs # 修改 /ebs 的owner为joe
修改文件[夹]访问权限
chmod 代表change mode; 例如:
chmod 644 important.txt
owner可读可写,group可读,others可读
First position refers to the user. Second refers to the group of the user, and the third refers to all others.4 = read 2 = write 1 = execute
给脚本添加执行权限:
chmod +x test.sh
PS 命令
查看java进程 ps -ef|grep java
产看进程的详细信息 ps -auxwe | grep subscribe
ps -ef|grep java
ps -auxwe | grep subscribe // 查看进程更详细的信息
lsof -p 110559 | grep cwd // 查看进程执行路径
命令行快捷键
CTRL-a 光标移至行首 CTRL-e 光标移至行尾 CTRL-u 删除整行 CTRL-h 删除光标前字符
gzip / gunzip
压缩单个文件
gzip fileName
压缩后的名字=原文件名字加上后缀.gz 解压缩单个文件gunzip filename
或者gzip -d filename
gzip 不能用来压缩整个文件夹至一个.gz 文件。压缩整个文件夹请参考targ + gzip 命令 即:tar -z
命令。
gzip -r dictName 命令会压缩整个文件夹dictName 里面的所有文件,每个文件被压缩成一个单独的*.gz 文件
tar 命令
gzip / bzip2 是用来压缩单个文件, tar是用来归档。 所以tar结合gzip/bzip2 可以方便的进行整个文件夹的压缩及归档。 压缩整个文件夹
tar -zcvf outputFileName folderToCompress
Examples
tar -xvf videos-14-09-12.tar.bz2 // 解压
bzip2
sftp 命令
sftp登录
sftp name@123.21.331.1
sftp 下载文件(夹)
get /home/joe/test.lsq /home/xxx/
get -r folder /home/joe/
sftp 上传文件
put /name1.html /name2/
scp 命令
scp PLC.png root@10.3.69.65:/www/media/images/ ##复制当前目录下的PLC.png 到目标机器的/www/media/images/
crontab 命令
创建执行任务, 添加cron job 参考cronjob
crontab -l
编辑cronjobcrontab -e
0 1 * * * /data/scripts/mysql-job.sh A // 每天1点执行
20 1 * * 0 /data/scripts/mysql-job.sh I // 每周日1点20 执行
Cron Job的日志位置: /var/log/cron 参考:crontab 时间可以参考: https://www.cnblogs.com/intval/p/5763929.html
注意cron的时间有可能和date命令的时间不一致。
tail -f /var/log/cron
这个命令可以查看cron的时间。 当执行crontab -e
的时候/var/log/cron
会有记录。
后台运行
nohup ./startAgent.sh > /dev/null 2>&1 &
cd - 目录跳转
cd /x/y 进入/x/y目录下
cd .. 返回上一级目录
cd ~ 进入制定用户的家目录
cd - 切换到上一次进入的目录
history - 查看命令历史记录
pwd - 显示当前路径
clear - 清空控制台
Vi - 编辑模式
使用
vi
进入文本后,按i
编辑文本
vi /etc/hosts
退出编辑模式
按ESC键,然后:退出vi
:q! 不保存文件,强制退出vi命令
:w 保存文件,不退出vi命令
:wq 保存文件,退出vi命令
mv - 移动/重命名
linux系统没有专门的重命名命令, 但可以通过 mv 命令实现
移动文件: mv 文件名 新目的地和文件名
mv ./1.jpg /usr/local/1.jpg
重命名文件: mv 文件名 新文件名
mv 1.jpg 2.jpg
mkdir - 创建目录
mkdir ./java
touch - 创建文件
touch test.txt
rm - 删除文件和文件夹
删除文件:
rm 文件名
删除空文件夹:注意: rmdir不能删除非空的文件夹
rmdir 文件夹名
删除非空文件夹:
rm -rf 文件夹名
参数释义:-r 就是向下递归目录,一并删除
- -f 就是直接强行删除,不提示
rm -rf /var/log/httpd/access #删除目录下所有文件、文件夹
rm -f /var/log/httpd/access.log #强制删除/var/log/httpd/access.log
find - 查找
根目录下, 查找某个文件:
find / -name test.txt
指定目录下, 查找某个文件:
find /etc -name access.log
当前目录下,查找具体名称的文件:
find . -name access.log
当前目录下,查找具体名称的文件(文件名不区分大小写):
find . -iname access.log
当前目录下,查找目录tmp:
find . -type d -name tmp
当前目录下, 模糊查找所有sh文件:
find . -type f -name "*.sh"
参数释义:
- -type f : 指定类型, f 文件, d 目录
- -name : 按名称查找
- -iname :按名称查找, 不区分大小写
防火墙
注意:添加后需要重新加载防火墙才能生效
添加端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=8888/tcp --permanent
重新加载
firewall-cmd --reload
防火墙启动关闭
systemctl start firewalld.service
systemctl stop firewalld.service
systemctl enable firewalld.service
或
service firewalld restart #重启
service firewalld start #开启
service firewalld stop #关闭
查看端口列表
firewall-cmd --permanent --list-port
firewall-cmd --list-all
查看端口占用情况命令
比如查看80端口占用情况使用如下命令:
lsof -i tcp:80
列出所有端口
netstat -ntlp
1、开启端口(以80端口为例)
方法一:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 写入修改
/etc/init.d/iptables save 保存修改
service iptables restart 重启防火墙,修改生效
方法二:
vi /etc/sysconfig/iptables 打开配置文件加入如下语句:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT #重启防火墙,修改完成
2、关闭端口
方法一:
/sbin/iptables -I INPUT -p tcp --dport 80 -j DROP 写入修改
/etc/init.d/iptables save 保存修改
service iptables restart 重启防火墙,修改生效
方法二:
vi /etc/sysconfig/iptables 打开配置文件加入如下语句:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j DROP 重启防火墙,修改完成
3、查看端口状态
/etc/init.d/iptables status
有时启动应用时会发现端口已经被占用,或者是感觉有些端口自己没有使用却发现是打开的。这时我们希望知道是哪个应用/进程在使用该端口。
CentOS下可以用netstat或者lsof查看,Windows下也可以用netstat查看,不过参数会不同
netstat -nap #会列出所有正在使用的端口及关联的进程/应用
lsof -i :portnumber #portnumber要用具体的端口号代替,可以直接列出该端口听使用进程/应用
4、检查端口被哪个进程占用
netstat -lnp|grep 88 #88请换为你的apache需要的端口,如:80
5、查看进程的详细信息
ps 进程号
6、杀掉进程
kill -9 1777 #杀掉编号为1777的进程(请根据实际情况输入)
常用环境安装
更新系统
yum -y update
安装EPEL源
yum -y install epel-release
安装开发工具包
yum -y groupinstall "Development Tools"
宝塔面板
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
或者
curl -sSO http://download.bt.cn/install/install_panel.sh && bash install_panel.sh
Node.js
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum -y install nodejs
npm install -g n
#安装n版本管理器
n stable
#安装稳定版Node.js
n
#切换Node.js版本
- 查看所有已经安装的node版本:n
可以在终端输入
n
命令查看所有已经安装的node版本,在显示版本的界面,可以使用上下箭头来选择一个你想要使用的node版本,然后按回车即可选择。按q
或者control + C
退出node版本列表:
~ n
node/8.12.0
ο node/9.11.2
- 使用或安装最新的官方发布:n latest
- 使用或安装稳定的官方发布:n stable
- 使用或安装最新的LTS官方版本:n lts
- 删除一个node版本:n rm 0.9.4
- 删除一些版本 :
n rm 0.9.4 v0.10.0
- 或者使用
-
代替rm
:n - 0.9.4
- 删除除当前版本外所有其他版本:n prune
cnpm淘宝镜像
npm install cnpm -g --registry=https://r.npm.taobao.org
Yarn
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install yarn
pm2
npm install pm2 -g
- 启动进程/应用
pm2 start bin/www
或pm2 start app.js
- 重命名进程/应用
pm2 start app.js --name wb123
- 添加进程/应用
watch pm2 start bin/www --watch
- 结束进程/应用
pm2 stop www
- 结束所有进程/应用
pm2 stop all
- 删除进程/应用
pm2 delete www
- 删除所有进程/应用
pm2 delete all
- 列出所有进程/应用
pm2 list
- 查看某个进程/应用具体情况
pm2 describe www
- 查看进程/应用的资源消耗情况 pm2 monit
- 查看pm2的日志 pm2 logs
- 若要查看某个进程/应用的日志,使用 pm2 logs www
- 重新启动进程/应用 pm2 restart www
- 重新启动所有进程/应用 pm2 restart all
Screen
yum install screen
$> screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
-A 将所有的视窗都调整为目前终端机的大小。
-d <作业名称> 将指定的screen作业离线。
-h <行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S <作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
常用screen参数
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
常用操作
创建会话(-m 强制):
screen -dmS session_name# session_name session名称
关闭会话:
screen -X -S [session # you want to kill] quit
查看所有会话:
screen -ls
进入会话:
screen -r session_name
Docker
卸载旧版本
sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
安装docker/docker-compose
curl -fsSL https://get.docker.com | bash
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
rm -f `which dc`
ln -s /usr/local/bin/docker-compose /usr/bin/dc
systemctl start docker
service docker start
systemctl enable docker.service
systemctl status docker.service
镜像相关操作
拉取镜像
docker image pull 镜像名
查看镜像列表
docker images
或者
docker image ls
删除镜像
docker irm image_id
或者
docker image rm 镜像名或镜像id
镜像备份
docker save -o 保存的文件路径以及文件名 镜像名
镜像迁移/加载到本地
docker load -i 镜像路径
容器相关操作
创建容器
docker run -itd --restart always --name 容器名 镜像名 执行的命令
其他参数含义:
--network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同
-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
-i 表示以“交互模式”运行容器 -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
--name 为创建的容器命名
-d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
-e 为容器设置环境变量 -e username="ritchie": 设置环境变量
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型
--link=[]: 添加链接到另一个容器 -
-expose=[]: 开放一个端口或一组端口 -h "RidingRoad": 指定容器的hostname
启动容器
docker container start container_name或container_id
停止容器
docker container stop container_name或container_id
kill容器
docker container kill container_name或container_id
查看容器列表
# 查看正在运行的容器
docker ps 或 docker container ls
# 查看所有容器
docker ps -a 或 docker container ls --all
向容器传入和执行命令
docker container exec container_id 命令
进入容器终端
docker attach container_id
或
docker container exec container_id /bin/bash
容器转入后台运行
Ctrl + p 然后 Ctrl + q
删除容器
docker rm container_id
或
docker container rm container_id
容器保存为镜像
docker commit 容器名 镜像名
服务器加速
yum install wget && wget -N --no-check-certificate "https://github.000060000.xyz/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
同步时间
yum -y install ntpdate
timedatectl set-timezone Asia/Shanghai
ntpdate ntp1.aliyun.com
配置检测、IO、随机下载速度
国内
wget https://raw.githubusercontent.com/oooldking/script/master/superbench.sh
chmod +x init.sh
./init.sh
国外
yum install wget -y
wget -qO- bench.sh | bash
maven
下载maven,具体目录可根据实际情况而定
wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar vxf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3 /usr/lib/maven
配置linux环境变量并验证是否安装成功
export MAVEN_HOME=/usr/lib/maven
export PATH=${PATH}:${MAVEN_HOME}/bin
source /etc/profile
mvn -v
