Centos基本命令
Centos基本命令
Centos基本命令 | Windows基本命令 | 含义 |
---|---|---|
ls | dir | 查看当前目录下的文件 |
ls -l | dir | 以列表的方式查看当前目录下的文件 |
ls -la | dir | 以列表的方式查看当前目录下的文件,并显示以点开头的隐藏文件 |
ls -lh | dir | 以列表的方式查看当前目录下的文件大小 |
clear | cls | 清屏 |
cd /home | cd d:/ | 改变目录(windows有盘符的概念,linux没有,所以linux直接/就行,. 是当前目录,.. 是上级目录) |
pwd | 显示当前所在的目录,加参数P(大写),显示当前目录的物理位置,比如链接文件夹进入之后,不加P,只会显示链接文件夹所在的位置,加P,显示链接的目标文件所在的位置 | |
whoami | 显示当前登录用户 | |
su root | 切换用户 | |
passwd | 默认修改当前用户的密码,后面加用户名的话,就是修改对应用户名的密码,但是这个得在root下才能使用 | |
ifconfig | ipconfig | 查看地址 |
ping | ping | 查看网络连接通信情况 |
mkdir | 创建目录 | |
cd - | 返回上次的目录下 | |
touch | 创建文本文件 | |
echo | 打印,默认换行打印,添加参数n,不换行 | |
echo helloworld > 1.txt | 重定向输出到文本文件中去(覆盖模式) | |
echo helloworld >> 1.txt | 重定向输出到文本文件中去(追加模式) | |
cat | type | 查看文本文件 |
tail | 显示最后10行内容,一般用于查看日志文件 | |
ls | head | 显示前10行内容 | |
more -5 | 分屏显示文件,一次显示5行,一般用于过大的文件,不带参数行数,默认显示一屏 | |
cp 1.txt 2.txt | 复制1.txt为2.txt,如果要复制多个文件可以使用通配符 cp *.txt /home,递归复制文件夹用参数r | |
rm 1.txt | 删除文件 | |
rm -rf | 强制递归删除目录 | |
mv | 剪切 | |
find | 查找某个文件夹下的所有文件,find . 是查找当前所在目录下的所有文件 | |
grep | 正则表达式匹配 | |
find . | more | |,管道符,前面命令的输出作为后面命令的输入 | |
hostname | 查看主机名称 | |
vi /etc/hostname | 修改主机名称 | |
vi /etc/hosts | 修改主机名和ip地址的映射 | |
gzip | 原地压缩,把原来的文件覆盖掉了,如果要解压缩,加参数-d | |
gunzip | 原地解压 | |
tar | -cvf 创建一个归档文件; -xvf 解档 | |
`` | 强制命令解析,在一些命令的参数中我们还需要写一些命令,为了让linux识别这个是命令,就可以用强制命令解析,例如:输出文件中的内容 :echo `cat 1.txt` | |
$() | 与上一个命令的含义一样,但它可以支持多层命令嵌套 | |
xargs | 多行变单行,使用空格替换回车换行符,一些命令不支持管道输入,比如说cp,就可以用到这个命令,例如:find . | grep txt | cp `xargs` temp ,这里面的xargs就代表前面管道的输出 | |
which | 查看命令所在地,可以根据返回路径去查看该命令的权限与当前用户的关系,是否可以执行 | |
sudo | 系统管理命令,相当于windows中的以管理员权限运行,面向所有命令,减少了需要切换登录root的时间 | |
…& | 以&号结尾是将当前要执行的作业放到后台运行 | |
jobs | 查看后台运行的作业数 | |
curl | 传输url上的数据,默认将url返回的数据直接打印在屏幕上,添加参数-o 下载到本地的路径,可以下载文件 | |
fg %n | 将指定的后台作业切换到前台,n表示进程的编号 | |
kill %n | 杀死作业,n表示作业的编号 | |
ps aux | 查看进程 | |
netstat -anop | 查看端口 | |
man | 命令帮助 | |
fdisk -l | 查看磁盘分区 | |
df | 查看磁盘使用情况,加上-ah可以人性化查看磁盘使用情况 | |
dirname /x/y/z | 取出指定文件的目录/x/y | |
basename /x/y/z | 取出指定文件的文件名称 z | |
reboot | 重启 | |
poweroff | 关机 | |
useradd -m | 创建用户 | |
userdel -rf | 强制删除用户(只有root管理员可以使用,同时删除该用户时应先退出该用户的登录状态(退出登录状态的命令在下面一行)否则删不掉) | |
exit | 退出当前用户的登录 | |
$PATH;${PATH};"$PATH" | 取出命令的环境变量路径 | |
export | 导入,后面加键值对,只对当前会话有效,相当于编程里面的变量定义,获取变量的值的命令:echo $变量名 | |
${var1:-${var2}} | 三元运算符表达式,当变量var1为空的时候,就返回var2的值,否则返回var1的值 | |
echo $? | 返回上一个命令执行的结果: | |
$# | 获取传递给可执行文件的参数的个数 | |
$n | 提取第n个参数 | |
$0 | 获取脚本名称 | |
$@ | 取出所有的参数 | |
shift | 参数左移,一般用于配合取参 | |
head -n 10 | 获前十行的内容,一般跟管道使用,跟more不一样,more只是显示前十行的内容 | |
df -h | 显示磁盘使用情况 | |
du -h | 显示当前文件夹的大小 |
Centos的文件结构
- windows是以磁盘分区物理结构作为文件系统结构
- linux文件系统结构是逻辑结构
- linux的所有用户的家都在home的目录下,root除外,cd ~ 这个命令可以让你快捷到达你的家目录下
- /bin和/sbin里面封装的是centos最基本的命令,/usr/bin和/usr/sbin里面封装的是centos厂商的命令,/usr/local/bin和/usr/local/sbin里面封装的是用户自己定义的命令
- /etc是配置目录
- /mnt是挂载目录
- /boot是引导目录
- /dev是设备目录
- /lib是库目录
Centos的文件类型
符号 | 说明 |
---|---|
- | 文件 |
d | 目录 |
l | 链接,类似于windows的快捷方式 |
b | 块文件(比如光盘,u盘等) |
c | 字符文件 |
Centos的权限
符号 | 说明 | 代表数值 | 含义 |
---|---|---|---|
r | 读 | 1 | 读取文件内容;读取文件夹中的内容 |
w | 写 | 2 | 可以向文件中写入内容;可以删除或增加文件夹中的内容 |
x | 执行 | 4 | 执行文件的内容;进入文件夹 |
- | 0 | 0 | 没有权限 |
Centos文件的权限分为三个部分,第一个3位是文件所属人物(u)的权限,第二个3位是文件所在的组(g)的权限,第三个3位是其他人(o)的权限
修改权限的命令:
去除所属人的权限:chmod u-权限 修改的文件
chmod u-w a.txt
增加所属人的权限:chmod u+权限 修改的文件
chmod u+rwx a.txt
修改所属人的权限:chmod u=权限 修改的文件
chmod u=rwx a.txt
去除组的权限:chmod g-权限 修改的文件
chmod g-w a.txt
增加组的权限:chmod g+权限 修改的文件
chmod g+rwx a.txt
修改组的权限:chmod g=权限 修改的文件
chmod g=rwx a.txt
去除其他人的权限:chmod o-权限 修改的文件
chmod o-w a.txt
增加其他人的权限:chmod o+权限 修改的文件
chmod o+rwx a.txt
修改其他人的权限:chmod o=权限 修改的文件
chmod o=rwx a.txt
去除所有人的权限:chmod a-权限 修改的文件
chmod a-w a.txt
增加所有人的权限:chmod a+权限 修改的文件
chmod a+rwx a.txt
修改所有人的权限
chmod 644 a.txt
递归修改文件夹以及文件夹内文件的权限
chmod -R 777
修改Centos的ip为静态ip
命令:
#查看网络状态
service network status
#先到这个目录下,找到一个以ifcfg-开头,以网络状态名称结尾的文件,修改这个文件
cd /etc/sysconfig/network-scripts
#修改ifcfg-xxx文件
vi ifcfg-ens33
#重启网络
service network restart
ifcfg-xxx文件:
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="1db6ab42-00f2-41d9-91c3-7037d175bfc3"
DEVICE="ens33"
ONBOOT="yes"
DNS1="114.114.114.114"
IPADDR="192.168.200.100"
PREFIX="24"
GATEWAY="192.168.200.2"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
修改文件的所属用户和组
#修改文件的拥有者和组
chown root:root 文件路径
#递归修改文件夹的拥有者和组
chown -R root:root 文件夹路径
创建链接文件
#创建硬链接:ln 需要创建链接的文件路径 链接名称
ln 1.txt b_lnk
#创建符号链接:ln -s 需要创建链接的文件路径 链接名称
ln -s 2.txt b_lnk2
#修改链接文件的指向
ln -sfT 修改的指向目录 需要修改的链接文件
- 硬链接
两个完全相同的文件,类似于实时备份。两个文件之间完全同步,除了删除步骤,缺点是占用空间,注意文件夹不允许创建硬链接 - 符号链接
符号链接,链接到目录,如果目录不存在,该链接就是无效链接
sudo命令的使用
sudo是临时借用root的身份去执行这个命令,相当于windows中的以系统管理员的身份去执行的功能一样,使用sudo命令之前,用户必须具有可以使用sudo命令的权利,需要去修改配置文件
配置文件修改:
-
etc文件夹是Centos系统根目录下面的文件夹,是Centos环境配置的文件夹,这里我们先进入etc目录下
-
找到sudoers文件给你需要的用户赋予权限
## Sudoers allows particular users to run various commands as ## the root user, without needing the root password. ## ## Examples are provided at the bottom of the file for collections ## of related commands, which can then be delegated out to particular ## users or groups. ## ## This file must be edited with the 'visudo' command. ## Host Aliases ## Groups of machines. You may prefer to use hostnames (perhaps using ## wildcards for entire domains) or IP addresses instead. # Host_Alias FILESERVERS = fs1, fs2 # Host_Alias MAILSERVERS = smtp, smtp2 ## User Aliases ## These aren't often necessary, as you can use regular groups ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname ## rather than USERALIAS # User_Alias ADMINS = jsmith, mikem ## Command Aliases ## These are groups of related commands... ## Networking # Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ## Installation and management of software # Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum ## Services # Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable ## Updating the locate database # Cmnd_Alias LOCATE = /usr/bin/updatedb ## Storage # Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount ## Delegating permissions # Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp ## Processes # Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall ## Drivers # Cmnd_Alias DRIVERS = /sbin/modprobe # Defaults specification # # Refuse to run if unable to disable echo on the tty. # Defaults !visiblepw # # Preserving HOME has security implications since many programs # use it when searching for configuration files. Note that HOME # is already set when the the env_reset option is enabled, so # this option is only effective for configurations where either # env_reset is disabled or HOME is present in the env_keep list. # Defaults always_set_home Defaults env_reset Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS" Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE" Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES" Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE" Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY" # # Adding HOME to env_keep may enable a user to run unrestricted # commands via sudo. # # Defaults env_keep += "HOME" Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin ## Next comes the main part: which users can run what software on ## which machines (the sudoers file can be shared between multiple ## systems). ## Syntax: ## ## user MACHINE=COMMANDS ## ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root ALL=(ALL) ALL ## 在这边复制一下上面一行的命令,将root改为你需要的给予sudo权限的用户名称 ## Allows members of the 'sys' group to run networking, software, ## service management apps and more. # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL ## Allows members of the users group to mount and unmount the ## cdrom as root # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom ## Allows members of the users group to shutdown this system # %users localhost=/sbin/shutdown -h now ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment) #includedir /etc/sudoers.d
Centos光驱挂载
在Centos的文件结构中,存放外设文件(光驱,打印机)的是在文件夹dev中管理的,光驱里面的文件是由dev文件夹下的链接文件cdrom管理的,如果我们想要查看光驱里面的东西,可以通过以下命令:
1. 创建一个文件夹
mkdir /cdrom
2. 以只读的方式将/dev/cdrom光驱里面的东西挂载到/cdrom中去
mount /dev/cdrom /cdrom
卸载挂载目录:
注意:首先必须要先从挂载目录中出来,否在会出现设备繁忙
umount /cdrom
脚本编写
脚本文件的创建
##创建并编写脚本文件,脚本文件一般为.sh结尾
vi a.sh
##给脚本文件赋予可执行的权利
chmod u+x a.sh
##执行脚本文件,并给脚本文件传递参数1,2,3,4,5,6
./a.sh 1 2 3 4 5 6
##脚本第一行写下面的命令,#!+路径,表示解释此脚本的shell路径,bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
#!/bin/bash
if条件语句
逻辑符号:
-eq:等于
-ne:不等于
-le:小于等于
-ge:大于等于
-lt:小于
-gt:大于
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真
##格式:if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi
## demo
if [ $# -lt 3 ] ; then
echo param too less!;
elif [ s# -rt 5 ] ; then
echo param too more;
else
echo param suitable;
fi
三元运算
#如果x为空,则取t,否则取x
m=${x:-t}
注意: 中括号与其他命令之间一定要用空格隔开,不然会报错
for循环
#打印前100的数
for(( x=0 ; x<100 ; x=$x+1 ));
do echo $x ; done ;
#打印所有的参数
for x in $@ ;
do echo $x ; done ;
while循环
#打印前100 的数
i=0
while((i < 100));
do
echo $i;
i=$((i + 1));
done;
yum
yum命令是用来安装软件的,软件安装通常需要安装各种依赖,这些依赖都来源于依赖软件源,软件源的在线地址配置在Centos的 /etc/yum.repos.d 文件夹下的*.repo文件中
demo修改软件源地址为阿里云地址
cd /etc/yum.repos.d
#下载阿里云的软件源的配置文件,文件名称重命名为aliyun.repo
curl -o ali.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#屏蔽Centos默认软件仓库,使阿里的软件源配置文件生效,将/etc/yum.repos.d文件夹下的*.repo文件删除或者更改扩展名
yum带各种参数的作用
#列出所有的软件包
yum list
#列出已经安装的软件包(数据量大可以用管道过滤)
yum list installed
#在yum的软件源中搜索软件nano
yum search nano
#安装软件nano
yum install nano
#不用提示我是否安装nano
yum -y install nano
#卸载软件nano
yum remove nano
#只下载不安装nano,如果需要下载的文件已经安装,可以换成reinstall
yum install --downloadonly --downloaddir=下载到本地的路径 nano
#本地安装nano
yum localinstall nano.rpm
#安装本地依赖
rpm -ivh xxx.rpm
#当依赖的版本有些许差别的时候,普通安装会失败,可以强制安装本地依赖
rpm -ivh --nodeps --force xxx.rpm
#卸载依赖
rpm -e xxx
编辑文本命令vi
- esc:切换到命令模式,退出编辑模式
- :q!:不保存退出
- :wq:保存退出
- i:进入编辑模式
- dd:删除一行
- x:删除一个字符
防火墙
#开放8080端口
firewall-cmd --permanent --add-port=8080/tcp
#移除开放的端口8080
firewall-cmd --permanent --remove-port=8080/tcp
#查看Centos开放端口
firewall-cmd --permanent --list-ports
#重启防火墙(修改配置后需要重启防火墙,并且永久有效)
firewall-cmd --reload
#关闭防火墙(当前会话有效)
service firewalld stop
#开启防火墙(当前会话有效)
service firewalld start
Centos文件操作
#创建文件
touch a.txt
#创建并写入数据到文件
vi a.txt
#查看文件
cat a.txt
#查看并修改文件
#vi命令进入只读模式
vi a.txt
#显示行号
:set nu
#进入编辑模式
i
#保存修改退出
:wq!
#不保存修改退出
:q!
#动态查看文件
tail -f a.txt
时间
#查看当前系统时间
date
#手动修改当前系统时间
date -s "2020-02-03 11:12:13"
#校时服务器
ntpdate ntp1.aliyun.com
定时任务
#修改配置文件
vi /etc/crontab
#在以下配置文件中加入需要定时执行的命令
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
#加入定时任务:每天16:00执行命令ntpdate ntp1.aliyun.com
0 16 * * * ntpdate ntp1.aliyun.com
免密登录
#1. 检查是否安装了ssh (openssh-server,openssh-clients,openssh)
yum list installed | grep ssh
#2. 检查是否启动了sshd(d表示守护进程)
ps aux | grep sshd
#3. 在客户端用户目录下生成秘钥对,会在.ssh文件夹下生成两个秘钥id_rsa(私钥)和id_rsa.pub(公钥)
#rsa,一种加密算法,密码是'',表示无密,f表示秘钥对生成在哪个文件夹路径下
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
#4. 追加公钥到~/.ssh/authorized_keys文件中(文件名、位置固定)
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
#5. 修改authorized_keys的权限为644(权限固定,不能多也不能少)
chmod 644 authorized_keys
#6. 验证是否成功,不需要输入密码
ssh localhost
#7. 将id_rsa.pub分发到你需要免密登录的其他服务器,并更名为authorized_keys,同时赋予权限644
scp -P 22 .ssh/id_rsa.pub root@Centos101:/root/.ssh/authorized_keys
scp -P 22 .ssh/id_rsa.pub root@Centos102:/root/.ssh/authorized_keys
#8. 测试免密登录
ssh -p 22 root@Centos101
exit
ssh -p 22 root@Centos102
exit
删除文件
#删除当前目录下92天之前的,文件类型是file的,名字以bk1,bk2结尾的
find . -mtime +92 -type f -name *.bk[12] -exec rm -rf {} \;
#当删除文件过大,可以使用argument list too long
find . -mtime +92 -type f -name "*.jpg" | xargs rm -r