Centos上shell命令整理
一 Linux上的组和用户的关系
- 一个Linux系统可以有多个组,一个组可以对应多个用户,其中root用户相当于管理员,可以管理其他用户,所以用root用户创建一个新用户。
二 在root下新建一个用户
登录root用户,使用root用户创建
sudo adduser 用户名 //新创建一个用户
sudo su root //切换到跟用户
passwd 用户名 //给该用户创建密码
文件目录命令:
ls //查看目录
ls -al //查看搜游目录信息
pwd //查看当前所在目录
三 CentOS查看CPU、内存、版本等系统信息
3.1查看CPU
grep "model name" /proc/cpuinfo
如果觉得需要看的更加舒服
grep "model name" /proc/cpuinfo | cut -f2 -d:
3.2查看内存
grep MemTotal /proc/meminfo
grep MemTotal /proc/meminfo | cut -f2 -d:
free -m |grep "Mem" | awk '{print $2}'
3.3 查看cpu是32位还是64位
查看CPU位数(32 or 64)
#getconf LONG_BIT
#echo $HOSTTYPE
#uname -a
3.4 查看当前linux的版本
#more /etc/RedHat-release
#cat /etc/redhat-release
3.5 查看内核版本
#uname -r
#uname -a
3.6 查看当前时间
date
3.7 查看硬盘和分区
df -h
fdisk -l //也可以查看分区
du -sh //可以看到全部占用的空间
du /etc -sh //可以看到这个目录的大小
3.8 查看安装的软件包
查看系统安装的时候装的软件包
cat -n /root/install.log
more /root/install.log | wc -l
查看现在已经安装了那些软件包
rpm -qa
rpm -qa | wc -l
yum list installed | wc -l
不过很奇怪,我通过rpm,和yum这两种方式查询的安装软件包,数量并不一样。没有找到原因。
3.9 查看键盘布局
cat /etc/sysconfig/keyboard
cat /etc/sysconfig/keyboard | grep KEYTABLE | cut -f2 -d=
3.10 查看selinux情况
sestatus
sestatus | cut -f2 -d:
cat /etc/sysconfig/selinux
3.11 查看ip,mac地址
在ifcfg-eth0 文件里你可以看到mac,网关等信息。
ifconfig
cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR
cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR | cut -f2 -d=
ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-
查看网关
cat /etc/sysconfig/network
查看dns
cat /etc/resolv.conf
3.12 查看默认语言
echo $LANG $LANGUAGE
cat /etc/sysconfig/i18n
3.13 查看所属时区和是否使用UTC时间
cat /etc/sysconfig/clock
3.14 查看主机名
hostname
cat /etc/sysconfig/network
修改主机名就是修改这个文件,同时最好也把host文件也修改
四 RPM安装命令总结
在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装、卸载及管理等操作。RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。RPM 有五种操作模式,分别为:安装、卸载、升级、查询和验证。
4.1用RPM安装软件包
#rpm -i example.rpm 安装 example.rpm 包;
#rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息;
#rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度
4.2 删除已安装的软件包
要卸载软件包example,只需输入以下这行命令:
# rpm -e example
注意:软件包名是example,而不是rpm文件名"example.rpm"。
4.3 升级软件包
升级软件类似于安装软件:
# rpm -Uvh example.rpm
用户要注意的是:rpm会自动卸载相应软件包的老版本。如果老版本软件的配置文件通新版本的不兼容,rpm会自动将其保存为另外一个文件,用户会看到下面的信息:
saving /etc/example.conf as /etc/example.conf.rpmsave
这样用户就可以自己手工去更改相应的配置文件。
另外如果用户要安装老版本的软件,用户就会看到下面的出错信息:
# rpm -Uvh example.rpm
examle packag example-2.0-l(which is newer) is already installed
error:example.rpm cannot be installed
如果用户要强行安装就使用-oldpackage参数。
4.4 查询软件包
用户可以用rpm -q在rpm的数据库中查询相应的软件,rpm会给出软件包的名称,版本,发布版本号,例如:
# rpm -q example
下面是查询时可以使用的特定参数:
-a:查询目前系统安装的所有软件包。
-f 文件名:查询包括该文件的软件包。
-F:同-f参数,只是输入是标准输入(例如 find /usr/bin | rpm -qF)
-q 软件包名:查询该软件包
-Q:同-p参数,只是输入是标准输入(例如 find /mnt/cdrom/RedHat/RPMS | rpm -qQ)
下面是输出时的格式选择:
-i 显示软件包的名称,描述,发行,大小,编译日期,安装日期,开发人员等信息。
-l 显示软件包包含的文件
-s 显示软件包包含的文件目前的状态,只有两种状态:normal和missing
-d 显示软件包中的文档(如man,info,README等)
-c 显示软件包中的配置文件,这些文件一般是安装后需要用户手工修改的,例如:sendmail.cf,passwd,inittab等
如果用-v参数就可以得到类似于ls -l的输出
4.5 用rpm校验软件包
rpm -Vf 需要验证到包
4.6 rpm 实用技巧!
1)用户可以通过FTP来安装软件包。如果用户能够连上网络,想安装某个新的软件包时,可以直接用它的URL地址来安装:
比如:现在在ftp.linuxsir.com/pub/linux/redhat/RPMS/下有这个文件包:foo-1.0-1.i386.rpm,那就可以用这样的命令:
# rpm -i ftp.linuxsir.com/pub/linux/redhat/RPMS/foo-1.0-1.i386.rpm
来安装,也可以查询!
2)如果用户不小心误删了几个文件,但不确定到底是那些文件,想对整个系统进行校验,以了解哪些部分可能已经损坏,可以用:
# rpm -Va
3)如果用户碰到一个认不出来的文件,想要知道它是属于那一个软件包的话,可以这样做:
# rpm -qf /usr/X11R6/bin/xjewel
结果会得到以下信息:
xjewel-1.6-1
4)如果用户得到一个新的RPM文件,却不清楚它的内容;或想了解某个文件包将会在系统里安装那些文件,可以这样做:
# rpm -qpi koules-1.2-2.i386.rpm
五 docker操作
5.1 Docker创建一个容器
#下载centos镜像,运行一个名为mycentos的容器,并在容器里运行/bin/bash
docker run -ti --name mycentos centos /bin/bash
#退出容器
Exit
#关闭容器
docker stop mycentos
#重启容器
docker start mycentos
5.2 docker安装
step1:使用yum命令进行安装
yum install -y docker
备注:-y 表示不询问 使用默认配置进行安装,等待提示 完毕!
step2:查看是否安装成功
yum list installed | grep docker
备注:命令为查看yum安装完成文件列表 并 筛选docker安装信息 如下
step3:启动docker服务
systemctl start docker
step4:查看是否启动成功
systemctl status docker
step5:使用docker命令
1)查看镜像
docker images
2)查找所有容器
docker ps -a
3)找出我们想要的容器名字,查找容器长ID
docker inspect -f '{{.ID}}' python
4)拷贝本地文件到容器
docker cp 本地路径 容器长ID:容器路径
docker cp /Users/xubowen/Desktop/auto-post-advance.py + 38ef22f922704b32cf2650407e16b146bf61c221e6b8ef679989486d6ad9e856
5)下载官方镜像:
docker pull 镜像名
6)停止某一镜像:
docker stop 镜像名
5.3 其他命令
1)、删除安装包
yum remove -y 安装包名
2)、停止/开始服务
systemctl stop docker
systemctl start docker
3)、移除已经安装镜像
docker rmi 镜像名:tag or 镜像id
4)、停止/启动/删除容器服务
docker stop 容器服务别名 or 容器id
docker start 容器服务别名 or 容器id
docker rm 容器服务别名 or 容器id
六 Windows上传文件到centos7服务器
1)首先linux上是否装上了ftp服务,命令:rpm -qa | grep vsftpd
若没有安装则进行第二步安装
2)安装ftp服务,命令:yum -y install ftp vsftpd
3)由于是默认安装,我们查看一下配置文件路径,命令:rpm -qc vsftpd
4)备份配置文件:命令:cp vsftp.config vsftpd.conf.origin
5) vi可以修改配置文件,进行授权等,这里先不改它
6)安装ftp,命令:yum -y install ftp
a.发现已安装,先不管他;
b.测试一下本机是否可以访问ftp,命令:ftp localhost,发现也是成功的,也不管了
c.退出ftp,命令:exit
如果此时拒绝连接:
通过FTP传输文件时拒绝连接此时需要查看FTP是否开启
查看FTP状态命令:service vsftpd status
如果FTP未开启,需要开启FTP,开启FTP命令:service vsftpd start
7)查看一下防火墙状态,命令:systemctl status vsftpd.service
若开启了防火墙则关闭,命令:systemctl stop vsftpd.service
或者这里也可以设置防火墙放开改服务,大家自行百度了
8)建立一个ftp用户,并设密码,命令:adduser ftpuser;passwd ftpuser
9)windows下开始用连接工具登录了,拖放文件随心所欲
七 文件操作
mv命令用于移动文件或者修改文件名称,是move的缩写,经常用mv备份文件和目录
格式:
mv 【选项】 源文件或目录 目标文件或目录
功能参数:
-b : 先备份在覆盖文件
-f : force(强制),目标文件已经存在,不询问直接覆盖
-i : 目标文件已经存在时,先询问是否覆盖
-u : 目标文件已经存在,且source比较新,才会更新update
-t : -target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
7.1文件重命名
命令: mv test.txt test1.txt
说明:此格式只是重命名,如test.txt文件中有内容,重命名之后不会影响内容,内容存在不被清空
将文件file1改名为file2,如果file2已经存在,则询问是否覆盖
命令:mv -i log1.txt log2.txt
将文件file1改名为file2,即使file2存在,也是直接覆盖掉。
命令:mv -f log3.txt log2.txt
说明:
log3.txt的内容直接覆盖了log2.txt内容,-f 这是个危险的选项,使用的时候一定要保持头脑清晰,一般情况下最好不用加上它
7.2移动文件
移动单个文件:
把d1目录的中的test.txt移动到n1目录下面,命令:
Mv /tmp/d1/test.txt /tmp/n1
将多个文件移动到目录中:
把log1.text,log2.txt,log3.txt移动到test3中,命令:
mv log1.txt log2.txt log3.txt test3 //三个文件移到 test3目录中
mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt //将三个文件移动到test4目录中
7.3 目录的移动
命令:mv dir1 dir2
说明:如果目录dir2不存在,将目录dir1改名为dir2;否则,将dir1移动到dir2中。
命令:mv * ../ //移动当前文件夹下的所有文件到上一级目录
命令:mv test3/*.txt test5 //把当前目录的一个子目录里的文件移动到另一个子目录里
7.4文件被覆盖前做备份
命令:mv log1.txt -b log2.txt
说明:
-b 不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。
–backup该选项指定如果目标文件存在时的动作,共有四种备份策略:
1.CONTROL=none或off : 不备份。
2.CONTROL=numbered或t:数字编号的备份
3.CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1…n:
执行mv操作前已存在以数字编号的文件log2.txt.~1~,那么再次执行将产生log2.txt~2~,以次类推。如果之前没有以数字编号的文件,则使用下面讲到的简单备份。
4.CONTROL=simple或never:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。
八 防火墙操作
8.1 查看防火墙状态
查看防火墙状态:sudo systemctl status firewalld
看到active(running)就意味着防火墙打开了。
8.2 关闭防火墙
关闭防火墙:sudo systemctl stop firewalld
关闭后查看是否关闭成功,如果看到inactive(dead)就意味着防火墙关闭了。
上述命令是暂时的防火墙关闭,重启系统之后就会回复之前的状态,如果是想重启后防火墙还是处于关闭的状态,得使用命令:
sudo systemctl disable firewalld
8.3 打开防火墙
打开防火墙:sudo systemctl start firewalld
长期打开防火墙同上