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