Linux-Centos 使用指南

Linux-Centos 使用指南

CentOSCommunity 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/networkNETWORKDING=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到组osboxes usermod -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 编辑cronjob crontab -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
    © 版权声明
    THE END
    喜欢就支持一下吧
    点赞13 分享
    评论 抢沙发

    请登录后发表评论