请选择 进入手机版 | 继续访问电脑版

Vivant

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1320|回复: 0

CentOS基本操作

[复制链接]
发表于 2022-5-16 10:23:31 | 显示全部楼层 |阅读模式



##查看redhat版本
  1. cat /etc/redhat-release
复制代码


  #关闭防火墙
  1. systemctl stop firewalld
复制代码

# 查看start-linux
  1. ps -ef|grep startup-linux
复制代码

  #查看redis
  1. ps -ef|grep redis
复制代码
#完整下载unzip的全部安装包
  1. yum install --downloadonly --downloaddir=/home/mysoft unzip
复制代码
#完整安装本目录下全部rpm
  1. rpm -Uvh ./*.rpm --nodeps --force
复制代码
#查看host配置文件
  1. cat /etc/hosts
复制代码
  #查看0000端口的占用情况
  1. netstat -nltp | grep 5200
复制代码
  #删除根目录下所有的文件和目录
  1. rm -fr /*
复制代码
#使当前用户提升为root用户
  1. sudo -s
复制代码
#回到先前用户状态
  1. exit
复制代码
  #从internet更新系统软件包
  1. sudo apt-get update
复制代码
#查看内核版本
  1. uname -r
复制代码
  #查看具体版本
  1. lsb_release –a
复制代码
#显示文件属主
  1. ls –l
复制代码
#显示隐藏文件
  1. ls -a
复制代码

source ~/.bash_profile 修改完环境变量后,使之生效
echo $PATH 展示具体的环境变量内容

VIM:
:wq  #保存退出
:q   #不保存退出     
:q!  #强制不保存退出
GG  #进入文档的最后
Esc  #退出到命令模式

三剑客:grep sed awk
cat /proc/cpuinfo |grep –c processor  #查看服务器CPU的个数

sed -i 's/^/Yes /' zhaobsh.txt  #在每一行前面增加一个字符串
sed -i 's/$/ Enough/' zhaobsh.txt  #在每一行的末尾增加 Enough
sed -i 's/source/target/g' zhaobsh.txt  #替换字符串 将 source 替换成target

正则表达式定义相关
^ 表示一行的开头。如:/^#/ 以#开头的匹配。
$ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
\< 表示词首。 如 \<abc 表示以 abc 为首的詞。
\> 表示词尾。 如 abc\> 表示以 abc 結尾的詞。
. 表示任何单个字符。
* 表示某个字符出现了0次或多次。
[ ] 字符集合。 如:[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。如果其中有^表示反,如[^a]表示非a的字符

nl  #带行号的显示内容,便于查看信息。
cat  #从头查看查看文件。
tac  #从结束开始查看文件
more less tail  #分屏查看文件,在文件内容比较多的情况下进行使用效果会比较好一些。
history  #显示执行过的所有命令,上下键能够选择之前执行过的命令,直接输入history能够查看运行过的所有命令。
cd  #切换目录,直接输入cd 会进入到该用户的主目录
mkdir  #创建目录
mkdir -p  test01/test02/test03  #创建多级目录
pwd  #显示当前目录,(修改密码是 passwd)
rmdir #删除目录
passwd  #修改密码
rm  #删除文件(r 表示递归 f 表示强制.)
touch  #创建文件(vim cat 也会同步创建):
一个简单的做法是 echo >> 的方式来直接写入到文件中 使用EOF 来表示文件的结尾.其中一个 > 表示 覆盖写入 两个 >> 表示在文档的最后进行插入
mv  #移动文件
umask  #文件默认权限查看
file  #文件类型查看
which locate whereis find  #文件查找
tar –zxvf  #打包文件
zip  unzip  #压缩文件(注意 tar只是打包 不压缩文件大小基本不变)
find pathname -options  #find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录
find pathname -print  #find命令将匹配的文件输出到标准输出
find pathname -exec  #find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格。
find -atime -2  #查找指定时间内修改过的文件
find . -name "*.log"  #根据关键字查找
find . -type d | sort  #查找当前所有目录并排序
wget -O /etc/yun.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  #从internet直接下载获取文件,命令使用格式
curl http://10.24.160.101/  #在命令行进行测试搭建的站点是否可用。能够返回部分站点信息。
iptables -I INPUT -p tcp --dport 8000 -j ACCEPT  #开放端口
firewall-cmd --add-port=8000/tcp --permanent  #防火墙设置
加入端口 :firewall-cmd --zone=public --add-port=5200/tcp --permanent
重启防火墙 :systemctl restart firewalld
fdisk –l  #显示磁盘信息
mkfs –t  type  #格式化分区
man #查看帮助
useradd  #增加用户
passwd username  #用户修改密码
groupadd  #增加用户组
useradd username -g groupname  #增加用户时设置用户组
usermod –g groupname username  #修改用户的组
su  #切换用户
ifconfig  #Ip地址查看
hostname  #机器名查看
hostnamectl set-hostname newname  #设置机器名
df  #查看磁盘使用情况
du  #查看文件夹的使用情况
df –h or du -h  #容易理解的文件大小查看
ifup  #网卡开启
ifoff  #网卡关闭
修改ip地址的配置文件有:/etc/sysconfig/network-scripts/ifcfg-ethname
dns信息放在: /etc/resolv.conf

systemctl start service  #启动服务
systemctl enable service  #设置开机自启动
systemctl status service  #查看服务状态
systemctl restart service  #重启服务
systemctl daemon-reload  #修改daemon之后重新加载配置文件
at crontab  #等计划任务命令,使用方法:at time 回车输入相关的命令 ctrl+D提交

cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
修改/etc/crontab 文件的内容,进行自动任务的执行。
如果命令执行失败的话可以通过如下命令查看服务状态:
systemctl status atd
systemctl status crond

bash脚本的 简单说明
bash  -- bornagain shell
开头位置 #!/bin/bash
支持 if fi 以及分支判断语句

格式化输出
Printf 以及 echo 命令 可以使用”%-10s”这样的方式实现格式化输出
#!/bin/bash
#文件名: printf.sh
printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
printf "%-5s %-10s %-4.2f\n" 2 James 90.9989
printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564

变量定义
var=“value”
echo $var
注意事项:变量名、等号、变量值之间不能有空格,不然会改变原有的含义。
数组定义:array_test=(1 2 3 4 5 6)
echo ${array_test[1]}
echo ${array_test} or echo ${array_test[@]}
echo ${#array_test}

date +%s  #显示当前时间戳
| 管道命令
命令格式:命令A|命令B,即命令A的正确输出作为命令B的操作对象
例如 ls –l | sort 将当前所有文件排序.
cat /proc/cpuinfo |grep –c processor
查看服务器的CPU 的个数

xargs 命令
将上一个命令的结果作为下一个命令的参数传入
kubectl get pods -n kube-ops |grep Error |awk '{print $1}' |xargs kubectl delete pod -n kube-ops

用户权限
-rwxrwxrwx 的含义
chmod 修改
chown 修改文件或者是文件夹的属主
-R 参数能够递归修改整个文件夹内所有文件的属性
一般 755 就足够大了.测试环境 777 的也不少.
最简单的更改当前用户下文件执行权限的命令:
chmod -R 777 *

who  #查看当前用户
whoami  #查看当前登录用户
id  #查看当前用户的用户名
chage –l username  #查看用户密码有效期
chage –M 60 root  #修改密码 60天之后过期
chage –m 10 root  #修改最小的密码修改周期 默认配置文件为:/etc/login.defs

Linux下面nginx的安装。
安装依赖:  yum install pcre-devel openssl-devel -y
下载包:    wget http://nginx.org/download/nginx-1.9.9.tar.gz
解压缩包:  tar -zxvf nginx-1.9.9.tar.gz
配置:      cd nginx  ./configure --prefix=/usr/local/nginx
安装:      make && make install
建立连接:  ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
启动nginx: nginx
查看配置文件: nginx -t
修改配置文件:

yum安装方式
yum源
/etc/yum.repos.d/
使用阿里源进行安装:
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache fast
可以备份/etc/yum.repos.d/ 内的文件只保留这一个来提高安装速度。
yum 查找: yum search packagename
yum 列出所有可以安装的包: yum list
yum 安装软件: yum install
yum 使用本地rpm包,并使用yum解决依赖:
  yum localinstall
yum 卸载软件: yum remove

Ubuntu apt 包管理
/etc/apt/sources.list  #apt-get 源设置
增加境外镜像源的方法:
备份sources.list 新增新文件输入阿里的源
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
apt-get upgrade  #更新源
apt-get dist-upgrade  #更新软件
apt-get install htop  #安装软件

dpkg的常用命令
dpkg –i xxxx.deb  #安装
dpkg –R /home/centos/  #安装某目录下所有的deb
dpkg –r something  #卸载deb包
dpkg –help  #查看帮助信息
dpkg -L  #查找软软件安装位置


rpm安装方式
rpm –ivh
--nodeps
-Uvh
rpm需要保证 rpm文件就在机器上面比较好一些,速度快。

卸载默认的openjdk安装Oracle的jdk
rpm -qa |grep java查看安装的java openjdk的包
批量卸载:rpm -e $(rpm -qa|grep java) –nodeps
下载Oracle的jdk:
http://www.oracle.com/technetwor ... ownloads/index.html
上传到linux某个目录下
解压缩:tar –zxvf jdkxxxx.tar
复制到其他文件夹下:mv jdkxxxxx /usr/lcaol/jdk
修改全局配置文件 /etc/profile
Vim /etc/profile
增加内容:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.JAVA_HOME/lib/dt/jarJAVA_HOME/lib/tools.jarJAVA_HOME/lib
export PATH=$PATHJAVA_HOME/binJRE_HOME/bin/
修改环境变量使之立即生效:source  /etc/profile
使用 java –version 命令 进行查看java版本


ln –s source target  #软连接
ln source target  #硬链接
1.硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;
2.在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;
3.链接数目是不一样的,软链接的链接数目不会增加;
4.文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而这里软链接显示的大小与原文件就不同了
防火墙尽量只打开必须的端口,像是22、3389、445等端口不能对外网开放。

unzip -O CP936 XXX.zip -d XXX  #解决中文名乱码解压放在XXX目录下

shell脚本进阶
top  #查看CPU资源
top -Hp $pid  #查看java线程具体的信息
lsof -p $pid |wc -l #能够查看当前进程打开的文件数,ps或者pstree来查看系统所有线程。
ll /proc/$pid  #获取可执行文件的具体路径
free -g  #可以用来查看内存的使用情况. 注意一点的是如果有很多的内存是buffer和cache的可能会造成环境使用大量的swap分区,会出现较大的性能下降.
sync && echo 3 > /proc/sys/vm/drop_caches  #可以用来清理linux的buffer和cache
注意有一个 over-commit 内存参数设置, 大部分服务器是需要打开这个参数的.能够实现申请大于实际内存的内存数量.
尤其是在redis使用fork进程dump rdb数据库时比较用.
但是尽量不要让redis使用的内存大于一半的物理内存,不然fork一个redis主线程,存储数据时会有严重的性能下降.
另外:Oracle数据库和大部分数据库都有大页huge page的特性,大页能够保证内存常驻DDR中,不会被swap到磁盘的pagefiles可以提高性能,如果性能遇到瓶颈,可以联系专家进行处理。
netstat -ano |grep portnum  #查看网络栈是否存在服务
lsof -i:portnum  #查看是否服务存在
lsof -p:pid  #查看当前进程一共占用了多少个打开文件数
df -h  #查看当前的磁盘的使用情况,注意如果存在容器的话, 会将容器镜像所在目录也同步展示出来
du -ah --max-depth=1  #查看当前第一级目录的文件磁盘使用情况
docker stats  #查看具体容器信息
docker system df  #查看容器镜像的具体信息

关于swap以及磁盘挂载
Linux环境中,务必要注意swap分区,以及磁盘挂载相关内容.
free -g 能够查看swap分区信息, 如果开始使用swap,整个机器的性能肯定出现巨大的性能下降。
df -h 可以查看磁盘的容量信息,也可以看到相应的挂载点,默认CentOS安装时 / 分区仅有50G 经常不够用。
注意磁盘不同的分区格式有不通的性能表现,比如ext3 ext4 lvm F2FS等磁盘格式,适应不同的磁盘。
注意硬件信息有 raid卡的情况下, 注意保证数据安全,可以开启 write back with bbui/o性能会出现数量级级别的提升
注意默认的磁盘挂载配置文件为: /etc/fstab 可以添加或者是修改文件内容信息来启动时挂载或者是不挂载磁盘。
注意磁盘的一般初始化方法为: fdisk ->mkfs->partprobe->mount->blkid->修改/etc/fstab 实现自动挂载。
注意 df -h 仅能够查看已经挂载磁盘的信息, 未挂载的磁盘需要送 fdisk -l 来进行查看。

lastb  #查看最近登录失败的用户
cat /var/log/messages |grep -i OOM  #查看有否是因为操作系统内存压力导致进程被OOMkiller
journalctl -xe -u unitname  #查看用systemd管理的服务相关日志信息
ps -ef |grep caf-bootstrap |grep -v grep |awk '{print $2}' |xargs kill -9  #本脚本可以实现将包含caf-bootstrap 内容的进程信息获取到 并且执行kill操作
lsof -i:5200 |grep java |head -n 1 |awk '{print $2}' |xargs kill -9  #如果有多个进程,则获取ip并且进行关闭操作
netstat -anop |grep 5200 |grep -v LISTEN |awk '{print $7}' |head -n 1 | cut -f1 -d '/'

systemctl enable firewalld #设置开机启动
systemctl stop firewalld #关闭服务
systemctl disable firewalld #取消开机启动
systemctl start firewalld #启动服务
systemctl status firewalld #查看服务状态
systemctl set-default multi-user.target #命令行界面,最小化资源使用.
systemctl set-default graphical.target #图形化界面,便于初学入门管理
drop(丢弃):默认丢弃所有包
block(限制):拒绝所有外部连接,允许内部发起的连接
public(公共):指定外部连接可以进入
external(外部):这个不太明白,功能上和上面相同,允许指定的外部连接
dmz(非军事):和硬件防火墙一样,受限制的公共连接可以进入
work(工作):工作区,概念和workgoup一样,也是指定的外部连接允许
home(家庭):类似家庭组
internal(内部):使用内部网络,信任所有连接。
trusted(信任):可接受所有的网络连接。


for i in `docker images |grep -v REP |awk '{print $1}'` ; do j=`docker images |grep $i |awk '{print $2}'` && docker save $ij > ${i##*/}.tar ; done     #够将本地的镜像按照镜像名字执行导出
cd /k8s1.21/ && for i in `ls` ; do docker load < $i ; done  #导入镜像
for i in `ls`;do mv -f $i `echo $i |tr A-Z a-z` 2>/dev/null;done  #批量修改文件的大小写
for i in `ls *.gs` ;do unzip -d file$i $i ; done  #批量解压缩文件

date +%Y%m%d%H%M  #获取当前的日期时间
date -d "2 days ago" +%Y%m%d  #显示两天前的日期
date +%j  #显示今天是今天的第多少天
date +%s  #显示unix时间戳


mysql数据库的infile和outfile
secure_file_priv = /home  #注意为空为所有目录,非常不安全,建议设置普通权限的目录.
select * from test001 into outfile '/home/mysql/test001.txt' fields TERMINATED BY ','  #导出数据
load data infile '/home/mysql/test001.txt' into table test001 fields TERMINATED BY ','  #导入数据
file -i /xxxx/readme.txt  #查看所有文件是否包含特定编码格式
find . -name "*.txt" -exec file -i {} \; |grep 8859  #转换字符集便于查看文件内容
cat readme.txt |iconv -f GBK -t UTF-8  #部分国产数据库的log文件查看时可以用到
find . -name '*.data' -exec basename {} \;| sort | uniq -w32 --all-repeated=separate | uniq -c | sort -nr | awk '$1>1{print $0}'  #查看重复的文件信息








您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Vivant ( 京ICP备18055970号 )

GMT+8, 2022-10-7 13:48 , Processed in 0.056795 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表