CentOS(Community Enterprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux(RHEL)依照开放源代码规定发布的源代码所编译而成。
查看系统信息
uname-ahostnamectlcat/etc/redhat-release # 系统详细信息
- 查看多少个CPU
grep 'model name' /proc/cpuinfo | wc -l
软件安装
CentOS7配置阿里云yum源和EPEL源
以centos7为例安装阿里云yum源
cd/etc/yum.repos.d/mkdirrepo_bakmv*.repo repo_bak/wget-O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoyumclean allyummakecache## ready to install software
EPEL源
yum list | grep epel-releaseyum 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
sudorpm -qa|grep jdk // 查看安装了哪些jdksudorpm -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
ClientAliveInterval30#客户端每隔多少秒向服务发送一个心跳数据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.1echo$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 组为rootsudo 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
01 * * * /data/scripts/mysql-job.sh A // 每天1点执行201 * * 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
防火墙启动关闭
systemctlstart firewalld.servicesystemctlstop firewalld.servicesystemctlenable firewalld.service
或
service firewalld restart #重启service firewalld start#开启service firewalld stop#关闭
查看端口列表
firewall-cmd --permanent --list-portfirewall-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/iptablessave 保存修改serviceiptables 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/iptablessave 保存修改serviceiptables restart 重启防火墙,修改生效
方法二:
vi /etc/sysconfig/iptables 打开配置文件加入如下语句:-A INPUT -p tcp -mstate --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 nodejsnpminstall -g n #安装n版本管理器nstable #安装稳定版Node.jsn #切换Node.js版本
- 查看所有已经安装的node版本:n
可以在终端输入
n
命令查看所有已经安装的node版本,在显示版本的界面,可以使用上下箭头来选择一个你想要使用的node版本,然后按回车即可选择。按q
或者control + C
退出node版本列表:
~ nnode/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.reposudo 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的sessionscreen-ls -> 列出当前所有的sessionscreen-r yourname -> 回到yourname这个sessionscreen-d yourname -> 远程detach某个sessionscreen-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
卸载旧版本
sudoyum remove docker docker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logrotatedocker-engine
安装docker/docker-compose
curl-fsSL https://get.docker.com | bashcurl-L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmoda+x /usr/local/bin/docker-composerm-f `which dc`ln-s /usr/local/bin/docker-compose /usr/bin/dcsystemctlstart dockerservicedocker startsystemctlenable docker.servicesystemctlstatus docker.service
镜像相关操作
拉取镜像
docker image pull 镜像名
查看镜像列表
dockerimages或者dockerimage ls
删除镜像
dockerirm image_id或者dockerimage 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
查看容器列表
# 查看正在运行的容器dockerps 或 docker container ls# 查看所有容器dockerps -a 或 docker container ls --all
向容器传入和执行命令
docker container exec container_id 命令
进入容器终端
dockerattach container_id或dockercontainer exec container_id /bin/bash
容器转入后台运行
Ctrl + p 然后 Ctrl + q
删除容器
dockerrm container_id或dockercontainer 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 ntpdatetimedatectlset-timezone Asia/Shanghaintpdatentp1.aliyun.com
配置检测、IO、随机下载速度
国内
wget https://raw.githubusercontent.com/oooldking/script/master/superbench.shchmod +x init.sh./init.sh
国外
yuminstall wget -ywget-qO- bench.sh | bash
maven
下载maven,具体目录可根据实际情况而定
wgethttp://mirrors.cnnic.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gztarvxf apache-maven-3.6.3-bin.tar.gzmvapache-maven-3.6.3 /usr/lib/maven
配置linux环境变量并验证是否安装成功
export MAVEN_HOME=/usr/lib/mavenexport PATH=${PATH}:${MAVEN_HOME}/binsource /etc/profilemvn -v
暂无评论内容