Linux之常用命令

用户权限

# root用户
	root:默认在Unix/linux操作系统中拥有最高的管理权限。
	root用户所在的组称为root组。“组”是具有相似权限的多个用户的集合。
	Linux系统的特性就是可以满足多个用户,同时工作,因此Linux系统必须具备很好的安全性。
在安装RHEL7时设置的root管理员密码,这个root管理员就是所有UNIX系统中的超级用户,它拥有最高的系统所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭进程,开启/禁用硬件设备等等。
因此“能力越大,责任越大”,root权限必须很好的掌握,否则一个错误的命令可能会摧毁整个系统。
在Linux系统中,用户也有自己的UID身份账号且唯一
系统管理员UID为0
系统用户UID为1~999    Linux安装的服务程序都会创建独有的用户负责运行。
普通用户UID从1000开始:由管理员创建
# 用户组
	为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过使用用户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。
假设有一个公司中有多个部门,每个部门中又 有很多员工。如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设 置权限。
Linux管理员在创建用户时,将自动创建一个与其同名的用户组,这个用户组只有该用户一个人
# 普通用户
	是管理员或者具备管理权限的用户所创建的,只能读、看,不能增、删、改。

创建普通用户

id root    # 查看用户的id信息 

#添加用户
useradd jason
#设置密码       
passwd 用户名

root用户可以修改其他所有人的密码,且不需要验证

# 存放用户信息的文件 /etc/passwd

id指令查看用户所属群主
[root@oldboy_python ~ 16:34:52]#id root
uid=0(root) gid=0(root) 组=0(root)

切换用户

# su命令可以切换用户身份的需求,
su - 用户名
su命令中间的-号很重要,意味着完全切换到新的用户,即环境变量信息也变更为新用户的信息

普通用户切换到root, 需要密码
#退出用户登录
logout  ( ctrl + d )

删除用户

userdel 用户名    
	-f     强制删除用户,但家目录还在
	-r     同时删除用户以及家目录
	userdel -rf 用户名  

sudo命令

sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

由于配置sudo必须编辑/etc/sudoers文件,并且只有root才能修改,咱们可以通过visudo命令直接编辑sudoers文件,使用这个命令还可以检查语法,比直接编辑 vim /etc/sudoers更安全

# visudo 编辑sudoers文件
vim /etc/sudoers
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
chaoge  ALL=(ALL)       ALL   #允许chaoge在任何地方,执行任何命令

文件与目录权限

Linux权限的目的是(保护账户的资料)

Linux权限主要依据三种身份来决定:

user/owner  # 文件使用者,文件属于哪个用户
group       # 属组,文件属于哪个组
others      # 既不是user,也不是group,就是other,

权限

在Linux中,每个文件都有所属的所有者,和所有组,并且规定了文件的所有者,所有组以及其他人对文件的,可读,可写,可执行等权限。

对于目录的权限来说,可读是读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录.
查看权限: ls -l /var/log/mysqld.log 

文件类型

-    -> 一般文件
d    -> 文件夹
l    -> 软连接(快捷方式)
b    -> 块设备,存储媒体文件为主
c    -> 代表键盘,鼠标等设备

文件权限

r    -> read可读,可以用cat,less,more等命令查看
w    -> write可写,vim,echo,>,>>可以编辑或者删除这个文件
x    -> executable 可执行  绿色文件
-    -> 没权限

权限与数字转化

权限与数字转化

ls -l /var/log/mysqld.log 
- rw- r-- r-- 1 mysql mysql 6735642 8月  11 14:19 /var/log/mysqld.log
这个就代表mysqld.log文件属主是mysql,属组是mysql,只有mysql用户可以读取编写这个文件,其他人只能读此文件。
r    read          4
w    write         2
x    execute       1
- rw- rw- r-- 1 root root 0 8月  11 16:41 pyyu.txt
属主是6     r+w(4+2)
属组是6     r+w(4+2)
other是4   r(4)

修改权限命令

chmod  [身份]   [参数]   [文件]
    -u(user)    +(添加)  
    -g(group)    -(减去)
    -o(other)   =(赋值)
    -a(all)

例子

例: -rw-rw-r-- 1 root root 0 8月  11 16:41 jason.txt
# 方法1
减去属主的写权限
chmod u-w jason.txt

# 方法2
属主添加可读可写可执行权限
chmod 700 jason.txt   

软连接

软连接也叫做符号链接,类似于windows的快捷方式。
常用于安装软件的快捷方式配置,如python,nginx等

ln -s 目标文件  软连接名
ln -s /opt/电话.txt  /tmp/小姐姐.txt    # 在tmp下由小姐姐.txt查看 电话.txt内容

1.存在文件/tmp/test.txt
[root@master tmp]# ls -l
-rw-r--r-- 1 root root     10 10月 15 21:23 test.txt

2.在/home目录中建立软连接,指向/tmp/test.txt文件
ln -s /tmp/test.txt my_test

3.查看软连接信息
lrwxrwxrwx 1 root root 13 10月 15 21:35 my_test -> /tmp/test.txt

4.通过软连接查看文件
cat my_test

my_test只是/tmp/test.txt的一个别名,因此删除my_test不会影响/tmp/test.txt,但是删除了本尊,
快捷方式就无意义不存在了

解压命令

1. unzip命令  # 解压.zip 格式的包
    -unzip 文件包.zip
2.tar格式的压缩包
-c或--create:建立新的备份文件;
-x或--extract或--get:从备份文件中还原文件;
-z或--gzip或--ungzip:通过gzip指令处理备份文件;
-f<备份文件>或--file=<备份文件>:指定备份文件;
-v:显示操作过程;

# 语法: 
tar  -cvf   压缩文件的名字   你要压缩的内容 
# 压缩文件
tar -cvf  all.tgz   /tmp/*    #压缩tmp下所有内容到  alltmp.tgz格式的压缩包下
#解压缩这个压缩文件
tar -xvf   all.tgz   

alltmp.tgz.gz  # 遇到这种压缩格式
# 解压缩这个压缩文件 
tar  -zxvf  alltmp.tgz.gz 

netstat命令

如果你的crm在服务器上运行了,怎么证明他是否正常
1.查看是否能接受响应
2.会产生一个进程 通过  ps -ef | grep python  查看 ,可以通过 pid管理进程
3.也会产生一个端口,通过 netstat -tunlp | grep  python 
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

netstat [选项]
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-l或--listening:显示监控中的服务器的Socket;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-a或--all:显示所有连线中的Socket;

ps命令

ps  命令常用参数
	-a     显示所有进程
	-u     用户以及其他详细信息
	-x     显示没有控制终端的进程

kill命令

1. kill 进程id       # 杀死普通进程

2. kill -9  pid     # 强制杀死僵尸进程

3. killall \ pkill  # 一次性杀死匹配多个的进程 

例:杀死多个vim进程 
pkill vim   # p是正则匹配的意思

iptables防火墙

1. 清空防火墙规则
iptables  -F
2. 关闭防火墙系统服务
systemctl stop/start/status firewalld   # 停止/开启/状态
3.禁止防火墙服务,开机自启
systemctl disable/enable  firewalld

systemctl is-enabled firewalld.service  # 检查防火墙是否启动

dns域名解析

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。

域名和ip  -->多对一的关系
本地的dns解析文件 /etc/hosts,手动写入 dns 与ip的对应关系 
/etc/hosts
123.206.16.61  s17wudi.com

windows的hosts解析路径:C:\Windows\System32\drivers\etc\hosts 
dns服务器文件: /etc/resolv.conf 
文件中,定义了2个主备dns服务器地址 
这些dns服务器,都搭建了一个叫做bind的软件,用于dns解析

阿里:    223.5.5.5    223.6.6.6
腾讯:    119.29.29.29
谷歌:    8.8.8.8
114:    114.114.114.114

nslookup  # 常用域名查询工具,查DNS信息用的命令。
nslookup pythonav.cn   # 查看python官网的域名

定时任务

# 后台运行,到了预定的时间就会自动执行的任务

crontab (选项)(参数)
	-e:编辑该用户的计时器设置;
	-l:列出该用户的计时器设置;
	-r:删除该用户的计时器设置;
	-u<用户名称>:指定要设定计时器的用户名称。
	
存放定时任务的文件
/var/spool/cron
注意:

1. 查看计划任务的执行:tail -f /var/log/cron
2. 写计划任务时,命令必须加上绝对路径,否则会出现这种情况:从日志中看,确实触发了计划任务的执行,但是命令却没有执行成功,比如* * * * * reboot就会出现这种情况,需要将reboot写成/usr/sbin/reboot
3.  计划任务执行的命令 是否存在,软件是否安装  
4. 确保crontab服务运行  
# 查看命令
systemctl status cron
ps -ef|grep crond
5. 检测crontab是否开机启动
systemctl is-enabled crond

crontab配置

# 在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件
crontab任务配置基本格式:
*  *  *  *  *  command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)  命令

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
30 08 * * *  每天8.30去上班  
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com  每隔三分钟执行下时间同步

例如:
* * * * *  /usr/bin/echo "你好世界" >> /tmp/test.txt  # 每分钟追加

# 每周一到周五的凌晨1点,清空/tmp目录的所有文件
分  时 日  月  周   命令
0   1  *  *  1-5  /usr/bin/rm  -rf /tmp/* 

软件包

程序(软件)组成部分:
    二进制程序  可执行命令
    库         .so文件
    配置文件    .conf
    帮助文件    readme    /usr/share/man

linux安装软件的方式

1.yum安装
	前端软件包管理器,从指定的服务器自动下载RPM包并且安装,自动处理依赖性关系,一次安装所有依赖的软包,无须繁琐地一次次下载、安装。
    yum安装受限于yum仓库,并且安装到了哪个路径,也难以更改 

2.源码编译安装     
	yum工具适用于简单,不重要的软件,方便安装
	源码编译安装,适合,重量级的,企业应用,
	源码编译安装可以扩展很多第三方功能 

3.rpm包安装  # 不是最优方式,需要手动解决依赖关系
    1.下载rpm包格式
    2.通过命令安装
        rpm -ivh  xx.rpm 

yum工具的配置
1.配置yum源 ,进入yum源目录   
	- /etc/yum.repos.d/
    - ls -l   # 查看yum源文件
    # 在这个目录下,只有叫做 *.repo的文件,才会被识别为 yum仓库文件 

2.移除所有系统自带的 yum仓库,放入到一个备份文件夹中
cd /etc/yum.repos.d/

mkdir  allbak文件夹 
mv ./*  allbak  移动所有的旧 仓库文件,到allbak中

3.下载阿里云的yum源
配置第一个仓库
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

配置第二个 epel仓库 ,执行如下命令  阿里云第三方软件源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

4.确保/etc/yum.repos.d目录底下,只有阿里云的 2个仓库
1)CentOS-Base.repo  2)epel.repo

5.yum工具自动安装软件 

6.如测试运行一下nginx  
    - yum install nginx  -y 
启动nginx
	- systemctl  start nginx  

7.查看linux的nginx服务,浏览器访问ip地址

yum工具参数

yum(选项)(参数)
-h:显示帮助信息;
-y:对所有的提问都回答“yes”;
-c:指定配置文件;
-q:安静模式;
-v:详细模式;
-d:设置调试等级(0-10);
-e:设置错误等级(0-10);
-R:设置yum处理一个命令的最大等待时间;
-C:完全从缓存中运行,而不去下载或者更新任何头文件。
清空yum缓存并且生成新的yum缓存
	- yum clean all
	- yum makecache

/etc下的linux目录知识

/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。
#网卡配置文件
	/etc/sysconfig/network-script/ifcfg-eth0
#修改机器名以及网卡,网管等配置
	/etc/sysconfig/network
#linux的dns客户端配置文件,实现域名和ip的互相解析
	/etc/resolv.conf
#本地dns解析文件,设定ip和域名的对应解析,开发测试最常用的临时域名解析
	/etc/hosts/
#系统全局环境变量永久生效的配置文件,如PATH等
	/etc/profile
#用户的环境变量
	~/.bash_profile 
	~/.bashrc
#存放可执行程序的目录,大多是系统管理命令
	/usr/sbin
#存放用户自编译安装软件的目录  > 等同于C:\Program files (windows)
	/usr/local
#关于处理器的信息,还可以top指令查看
	/proc/cpuinfo
#查看内存信息,还可以free -m
	/proc/meminfo 
# 安装此软件,即可拖拽上传下载linux代码到windows
yum install lrzsz
posted @ 2019-06-28 08:48  言值  阅读(218)  评论(0编辑  收藏  举报