Linux命令
本文档记录Linux用到的一些命令既该命名出现异常时的处理方法.
当一个命令本来可以执行但是在安装了python3后出现问题,到usr/bin目录下把原来python改为python2即可
查询系统相关信息
查询系统版本
cat /etc/redhat-release
查询系统位数
uname -a
查看服务器IP
ifconfig |grep inet |awk 'NR==1{print $2}'
相关问题:
-
-bash: ifconfig: 未找到命令原因: 可能没有安装
ifconfig工具包检查: 查看环境变量(在ROOT用户下操作),
ifconfig命令是否存在,不在则进行下载命令:
echo $PATH
cd /usr/local/sbin
/usr/sbin | grep ifconfig
yum search all ifconfig
yum install net-tools.x86_64
查询某个程序进程
ps -ef|grep -i 程序名
杀死进程
kill -9 进程ip
重启系统
reboot
init 1
关闭系统
shutdown
init 0
查看分区信息
df -lh
查看文件所占内存大小
du -h -x --max-depth=1
Swap分区相关
Swap:交换分区
类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
当用户提交程序,然后产生进程,在机器上运行。机器会判断当前物理内存是否还有空闲允许进程调入内存运行,如果有那么则直接调入内存进行运行;如果没有,那么会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。从这也可以看出swap扮演了一个非常重要的角色,就是暂存被换出的进程。
创建交互分区
首先扩展一个虚拟内存
查看swap分区是否启
cat /proc/swaps
创建8G大小的swap
dd if=/dev/zero of=/data/swap bs=1M count=8192
将/dev/zero内容写入/data/swap,读写块大小1024bytes ,块个数8192。
/dev/zero是个未使用的文件模版,可以用它来创建“干净”的文件。后两个参数可以控制文件大小。
如果根目录下没有data文件夹,则要先去创建,否则会提示:"dd: 打开'/data/swap' 失败: 没有那个文件或目录"
mkdir -p /data
将上面新建出的文件做成swap分区
mkswap /data/swap
如果出现该提示:"mkswap: /data/swap:不安全的权限 0644,建议使用 0600",则设置该文件的权限为0600即可
chmod 0600 /data/swap
激活启用分区
swapon /data/swap
查看状态
swapon -s
设置自动挂载交换分区
echo "/data/swap swap swap defaults 0 0" >> /etc/fstab
将 /data/swap swap swap defaults 0 0 写入文件 /etc/fstab
启用系统交换分区的配置
swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60。也就是说,你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。大家知道,内存的速度会比磁盘快很多,这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。
查看当前配置
cat /proc/sys/vm/swappiness
临时调整
sysctl vm.swappiness=60
若想永久修改,则编辑/etc/sysctl.conf文件,该文件中有vm.swappiness的变量配置,默认为0
编辑配置文件
vim /etc/sysctl.conf
追加或修改
追加或修改
启用配置
sysctl -p
查看swap分区是否启动
cat /proc/swaps
查看linux内存使用情况,会多显示一行Swap,可用内存8162M
free -m
删除交换分区
停止交换分区
swapoff /data/swap
删除/etc/fstab文件中的自动挂载
vim /etc/fstab
把这行删除 /data/swap swap swap defaults 0 0
删除分区文件
rm /data/swap
解决“/dev/mapper/centos-root 100%”
查看内存信息
df -h
查找异常的文件或目录
从根目录开始找,一层一层的找
cd /
du -h -x --max-depth=1
找到异常的文件或目录后对该文件或目录进行处理,大致有以下几种情况:
- 日志文件太多,备份日志文件到其他地方,清理日志文件
- 废弃缓存太多,清理掉就好
- swap分区,适当缩小分区,如该分区没有实际用途可直接删除
- docker废弃容器,清理docker废弃容器
还有一个种处理方式扩容内存,就是把别的分区的内存分到root分区下,这种操作风险比较大,一个不留意可能导致系统崩溃所以不推荐.如下操作慎重进行:
总体过程:把/home内容备份,然后将/home文件系统所在的逻辑卷删除,扩大/root文件系统,新建/home ,恢复/home内容
1.查看分区
df -h
2.备份home分区文件
tar cvf /tmp/home.tar/home
3.卸载/home,如果无法卸载,先终止使用/home文件系统的进程
fuser -km /home/
umount /home
4.删除/home所在的lv
lvremove/dev/mapper/centos-home
5.扩展/root所在的lv,增加800G
lvextend -L +800G/dev/mapper/centos-root
6.扩展/root文件系统
xfs_growfs/dev/mapper/centos-root
7.重新创建home lv
lvcreate -L 73G -n/dev/mapper/centos-home
8.创建文件系统
mkfs.xfs /dev/mapper/centos-home
9.挂载home
mount/dev/mapper/centos-home
10.home文件恢复
tar xvf /tmp/home.tar -C/home/
cd /home/home/
mv * ../
软连接相关
创建软连接
ln -s 原地址 /usr/bin/连接名
删除软连接
cd /usr/bin
unlink 连接名
#或者
rm 连接名
#一定不能使用rm -rf 连接名 会删除原地址上的源文件
用户和用户组相关
用户相关
添加用户
useradd [options] [username]
#useradd===adduser
#options:
-g [groupname] 指定用户所属的用户组,默认不指定会自动创建一个同名的用户组
-G [groupname] 添加附属组
-D 显示创建用户相关的默认值
-d [directory] 指定用户主目录
-m -d指定的注目录不存在则创建
-u UID 指定用户的用户号,如果同时有-o则可以使用其他用户的标识号.注意: uid不能为负值,预设值不能小于99,0~99为系统预设
查看用户信息
tail -l /etc/passwd
查看用户和密码信息
tail -l /etc/shadow
查看所有建立账号的主目录
ls /home
修改用户
usermod [options] [username]
#options
-d [directory] 修改用户登录的主目录
-e [days] 修改用户账号的有效期限
-g [groupname] 修改用户所属的组
-l [loginname] 修改用户登录时的名称
-p [password] 修改用户密码 #尽量不适用usermod命令修改密码会显示在/etc/shadow文件汇中
-s [shell] 指定用户登录的shell,不设置用系统预设的shell
删除用户
userdel [options] [username]
#options:
-r 删除用户目录也就是/home下的用户目录
修改用户密码
#不推荐
usermod -p [password] [username]
#推荐 修改密码时不需要携带任何options
passwd [options] [username]
#options:
-l 锁定用户口令,也就是禁止使用该账号登录
-u 口令解锁
-d 关闭使用者的密码确认功能,也就是root用户切换账号时不用输入密码
-f 强迫用户下次登录时修改密码
-l [loginname] 变更用户登录时的名称
-s 显示指定使用者的密码认证种类,只有root用户可以使用
切换用户
su [username]
用户组相关
添加用户组
groupadd [options] [groupname]
#options:
-g GID 除非使用-o参数,否则GID的值必须唯一且不能为负数
-o GID 运行GID不唯一
-r 加入组GID号,且GID低于499系统账号
-f 新增一个已经存在的用户组账号
查看用户组信息
tail -l /etc/group
修改用户组
groupmod [options] [groupname]
#options:
-g GID 修改用户的GID
-o GID 重复使用GID
-n 为群组该名
删除用户组
groupdel [groupname]
#必须先删除该组下的用户才能删除该组
文件和文件夹相关
创建文件夹
mkdir 文件夹名称
创建多级文件夹
mkdir -p 文件夹/文件夹2/文件夹3/......
删除空文件夹
rmdir 文件夹名称
删除非空文件夹(删除多级文件夹)
rm -rf 文件夹名称
批量重名名
rename 修改的文件名 改成什么 修改的位置
?标识匹配
文件夹切换
#切换目录
cd 文件夹路径
#切换到当前用户的家目录
cd ~
#切换到根目录
cd /
#切换到上一次切换到的目录
cd -
成列文件
ls [选项]
#成列所有文件包括隐藏文件
-a
#成列文件的详细信息
-l
#自适应显示文件大小
-h
#查看当前目录信息
-d
创建文件
touch 文件名称
touch 文件名称{1....最大数量}
vi 文件名
对文件进行编辑
:wq #即可
#vim同理
删除文件
rm 文件名
重命名文件夹或文件
mv 原文件或文件夹名称 新文件或文件夹名称
移动文件或文件夹(剪切)
mv 原文件或文件夹位置 新文件或文件夹位置
复制文件或文件夹
#
.代表当前目录#默认不支持复制文件夹,如果复制文件夹需添加
-rcp 文件或文件夹位置 复制到的位置
VIM相关
压缩与解压相关
常见压缩文件后缀
*.gz gzip程序压缩文件
*.bz2 bzip2程序压缩文件
*.tar tar命令打包的数据没有进行压缩
*.tar.gz tar命令打包后gzip进行压缩后的文件
*.tar.bz2 tar命令打包后bzip2进行压缩的文件
gzip压缩/解压
gzip [选项] 压缩文件夹 >> 压缩后的文件夹
#将压缩的数据输出到标准输出(stdout)上
-c
#解压缩
-d
#可以用来检验一个压缩文件的一致性,也就是检查文件是否存在错误
-t
#可以显示出原文件/压缩文件的压缩比等信息
-v
#压缩登记 ,1最快压缩比差;9最慢,压缩比好,默认是6
-(1~9)
#查看压缩文件的压缩比
-l
bzip2压缩/解压
bzip2 [选项] 压缩文件夹 >> 压缩后的文件夹 -k后不需要重定向
#将压缩的数据输出到标准输出(stdout)上
-c
#解压缩
-d
#可以显示出原文件/压缩文件的压缩比等信息
-v
#压缩登记 ,1最快压缩比差;9最慢,压缩比好,默认是6
-(1~9)
#保留源文件,压缩完后自动生成压缩文件
-k
查看压缩文件内容
cat 文件名
zcat gz文件名
bzcat bz2文件名
tar打包/压缩/解压
#压缩
tar [选项] 压缩后的名称.tar.gz/.tar.bz2 要压缩的文件目录或文件
#解压
tar [选项] 要解压的文件 -C指定解压目录
#建立打包文件
-c
#查看打包文件的内容包含那些文件
-t
#解打包或解压缩功能
-x
#通过bzip2的支持进行压缩/解压缩,此时文件名最好为.tar.bz2
-j
#通过gzip的支持进行压缩/解压缩,此时文件名最好为.tar.gz
-z
#在压缩/解压的过程中将正在处理的文件显示出来
-v
#-f后面跟处理文件的全名称(路径+文件名+后缀)
-f filename
#在解压的时候解压到指定目录
-C 目录
防火墙相关
开启防火墙
service firewall start
关闭防火墙
service firewall stop
重启防火墙
service firewall restart
--------------------------------------------------------or--------------------------------------------------------
firewall-cmd --reload
查看防火墙规则
firewall-cmd --list-all
查询端口是开放
firewall-cmd --query-port=端口/tcp
开放端口
firewall-cmd --permanent --add-port=端口/tcp
移除端口
firewall-cmd --permanent --remove-port=端口/tcp
nginx相关
启动nginx
nginx
停止nginx
nginx -s stop
重启nginx
nginx -s reopen
安全退出nginx
nginx -s quit
查看nginx版本
nginx -v
检查nginx配置文件正确性
nginx -t
重新加载配置文件
nginx -s reload
MySQL相关
启动MySQL
systemctl start mysqld.service
重启MySQL
systemctl restart mysqld.service
停止mysql
systemctl stop mysqld.service
查看mysql版本
rpm -aq | grep -i mysql
查看mysql状态
systemctl status mysqld.service
Decker相关
Docker Overlay2占用大量磁盘空间处理方法
查看当前目录的磁盘空间
df -lh
查看下是否是容器变大了
docker ps -s
#发现容器没有变大
查看docker默认存放镜像和容器的目录是不是没有改,因为默认目录空间很小
#docker中默认存放镜像和容器的目录是:/var/lib/docker/
cat /etc/docker/daemon.json
查看目录下面所有文件夹大小,对结果进行排序,取前10个
du -Sh /home/hd/docker/data/overlay2 | sort -nr | head -n10
因为没有发现文件,后面就清空下废弃的容器
docker system prune
清理磁盘
docker system prune [ -a]
查看Docker的磁盘使用情况
docker system df
清空废弃容器
docker system prune
Oracle相关
操作oracle需要的oracle用户下
su - oracle
启动ORACLE(单机)
sqlplus /nolog
oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit
su oracle cd /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 export PATH=/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin:$PATH ./sqlplus / as sysdba startup quit
lsnrctl start
关闭ORACLE系统(单机)
sqlplus /nolog
oracle>svrmgrl SVRMGR>connect internal SVRMGR>shutdown SVRMGR>quit
su oracle cd /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 export PATH=/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin:$PATH ./sqlplus / as sysdba shutdown immediate quit
oraenv ORACLE_SID = [oracle] ? sid ORACLE_HOME = [/home/oracle/app/oracle/product/11.2.0/dbhome_1] ? sqlplus / as sysdba shutdown immediate
quit
启动ORACLE(双机)
su - root
hareg -y oracle
关闭ORACLE(双机)
su - root
hareg -n oracle
关于ORACLE启动方式
- startup nomount
非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
- startup mount dbname
安装启动,这种方式启动下可执行:
数据库日志归档、
数据库介质恢复、
使数据文件联机或脱机,
重新定位数据文件、重做日志文件。
执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,
但此时不对数据文件和日志文件进行校验检查。
-
startup open dbname 先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。
-
startup,等于以下三个命令
startup nomount alter database mount alter database open -
startup restrict
约束方式启动
这种方式能够启动数据库,但只允许具有一定特权的用户访问
非特权用户访问时,会出现以下提示:
ERROR:
ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用
- startup force
强制启动方式
当不能关闭数据库时,可以用startup force来完成数据库的关闭
先关闭数据库,再执行正常启动数据库命令
- startup pfile=参数文件名
带初始化参数文件的启动方式
先读取参数文件,再按参数文件中的设置启动数据库
例:startup pfile=E:Oracleadminoradbpfileinit.ora
- startup EXCLUSIVE
关于表空间
创建表空间
create tablespace ziyuan datafile '/home/oracle/oradata/oral/ziyuan/ziyuan.dbf' size 512m autoextend on next 10m;
create tablespace 后面是表空间名称
datafile '/home/oracle/oradata/oral/ziyuan/ziyuan.dbf'(指定表空间对应的数据文件)
size 100m (指定表空间的初始大小)
autoextend on (自动增长,当表空间存储都占满时,自动增长)
next 10m; (指定一次自动增长的大小)
删除表空间
drop tablespace ziyuan
用户相关
创建用户
create user ziyuan identified by ziyuan123 default tablespace ziyuan
identified by 后边是用户密码
default tablespace 后边是表空间名称
授权
grant dba to ziyuan
grant 角色 to 用户
DBA:用户具有数据库所有的权限。
connect:用户具有连接数据库的权限,用户只能登录Oracle,不可以创建实体、不可以创建数据库结构。
resource:用户可以创建实体,但是不可以创建数据库结构。
-
授权用户connect、resource角色权限。一般创建应用程序开发可以授予这两个角色的权限。
grant connect,resource to zhang;
-
授权用户chenmh用户zhang下person表的select、delete、update、insert权限(增删改查),授予具体地对象权限是对于权限严格控制的一种方案。
grant select,delete,update,inster on zhang.person to chenmh;
-
授予用户chenmh用户zhang下person表的所有权限
grant all privileges on zhang.person to chenmh;
权限回收
-
回收角色权限
remove connect,resource from chenmh;
-
回收系统权限
remove creat from chenmh;
-
回收用户对象权限,回收zhang用户下person表的所有权限,如果是单个授予的权限需要单个的收回
remove all privileges on zhang.person from chenmh;
SRS相关
常用命令
cd trunk目录
./etc/init.d/srs stop // 停止srs ./objs/srs -c conf/srs.conf // 启动srs ./etc/init.d/srs status // 查看srs服务状态 tail -n 30 -f ./objs/srs.log. // 查看SRS的日志
Docker相关
启动
service docker start
或
systemctl start docker
# 开机启动
systemctl enable docker
# 重启
systemctl restart docker