当先锋百科网

首页 1 2 3 4 5 6 7

Centos基本命令

Centos基本命令Windows基本命令含义
lsdir查看当前目录下的文件
ls -ldir以列表的方式查看当前目录下的文件
ls -ladir以列表的方式查看当前目录下的文件,并显示以点开头的隐藏文件
ls -lhdir以列表的方式查看当前目录下的文件大小
clearcls清屏
cd /homecd d:/改变目录(windows有盘符的概念,linux没有,所以linux直接/就行,. 是当前目录,.. 是上级目录)
pwd显示当前所在的目录,加参数P(大写),显示当前目录的物理位置,比如链接文件夹进入之后,不加P,只会显示链接文件夹所在的位置,加P,显示链接的目标文件所在的位置
whoami显示当前登录用户
su root切换用户
passwd默认修改当前用户的密码,后面加用户名的话,就是修改对应用户名的密码,但是这个得在root下才能使用
ifconfigipconfig查看地址
pingping查看网络连接通信情况
mkdir创建目录
cd -返回上次的目录下
touch创建文本文件
echo打印,默认换行打印,添加参数n,不换行
echo helloworld > 1.txt重定向输出到文本文件中去(覆盖模式)
echo helloworld >> 1.txt重定向输出到文本文件中去(追加模式)
cattype查看文本文件
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文件系统结构是逻辑结构
  1. linux的所有用户的家都在home的目录下,root除外,cd ~ 这个命令可以让你快捷到达你的家目录下
  2. /bin和/sbin里面封装的是centos最基本的命令,/usr/bin和/usr/sbin里面封装的是centos厂商的命令,/usr/local/bin和/usr/local/sbin里面封装的是用户自己定义的命令
  3. /etc是配置目录
  4. /mnt是挂载目录
  5. /boot是引导目录
  6. /dev是设备目录
  7. /lib是库目录

Centos的文件类型

符号说明
-文件
d目录
l链接,类似于windows的快捷方式
b块文件(比如光盘,u盘等)
c字符文件

Centos的权限

符号说明代表数值含义
r1读取文件内容;读取文件夹中的内容
w2可以向文件中写入内容;可以删除或增加文件夹中的内容
x执行4执行文件的内容;进入文件夹
-00没有权限

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 修改的指向目录 需要修改的链接文件
  1. 硬链接
    两个完全相同的文件,类似于实时备份。两个文件之间完全同步,除了删除步骤,缺点是占用空间,注意文件夹不允许创建硬链接
  2. 符号链接
    符号链接,链接到目录,如果目录不存在,该链接就是无效链接

sudo命令的使用

sudo是临时借用root的身份去执行这个命令,相当于windows中的以系统管理员的身份去执行的功能一样,使用sudo命令之前,用户必须具有可以使用sudo命令的权利,需要去修改配置文件
配置文件修改:

  1. etc文件夹是Centos系统根目录下面的文件夹,是Centos环境配置的文件夹,这里我们先进入etc目录下

  2. 找到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