linux简介
Linux是一种自由和开放源码的操作系统 Linux出现于1991年,是由芬兰赫尔辛基大学学生Linus Torvalds和后来加入的众多爱好者共同开发完成 市场上存在着许多不同的Linux发行版本 Linux可安装在各种计算机硬件设备中,比如笔记本电脑、台式计算机、手机、平板电脑、路由器等。 Linux系统最擅长的领域是作服务器操作系统和嵌入式操作系统
- 稳定
- 轻量级
- 开源,支持各种自定义扩展
- 发行版本很多,但是一般使用RedHat和CentOS,RedHat企业版linux 和CentOS差别不大,CentOS是基于Red Hat Linux 企业版开发的一个社区版本,可免费自由使用;而且CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RedHat 那样需要花钱购买支持服务!
linux系统安装
- 首先,到相应发行版的官网下载linux安装光盘镜像(按硬件平台选择相应版本)
- 在物理机或者虚拟机上安装linux系统
- 在物理机上安装linux系统跟安装windows系统的步骤类似
- 而在虚拟机上则支持“傻瓜式”安装,几乎全自动
- 虚拟机:用软件模拟出来的虚拟计算机
- 虚拟机软件:用来创建和运行虚拟计算机的一个软件,比如Vmware或VirtualBox
- 安装步骤:
- 在虚拟机上的安装步骤:
- 1.启动Vmware
- 2.点击创建虚拟机
- 3选择典型
- 4.选择linux操作系统“安装光盘”的镜像文件
- 5.为即将安装的linux系统预设一个用户和登陆密码
- 6.为新创建的这台虚拟机设置名称及数据存放路径
- 7.设置分配给虚拟机的最大磁盘空间,一般分配20G硬盘,2g内存
- 8.点击完成开始虚拟机创建并启动
- 9.等待安装完成
- 在虚拟机上的安装步骤:
- 检查网络连通性
- pingwww.baidu.com/192.168.xxx.xxx
- 查看ip地址
- ifconfig查看所有网络设备的地址信息 ifconfig eth0查看指定的eth0以太网卡的地址信息
- 修改ip地址
- ifconfig eth0 192.168.1.8 netmask 255.255.255.0
- 通过setup修改网络配置
- 在root权限下执行setup指令可以打开一个带菜单的伪图形界面来修改网络配置
- 通过配置文件修改ip地址
- nano /etc/sysconfig/network-scripts/ifcfg-eth0 修改该配置文件即可改ip地址
linux系统远程登陆
- 服务器通常都是放置在专用的机房中管理,因而,直接在服务器上操作很不方便,生产实践中都是通过远程登录的方式来操作服务器
- 远程登录linux服务器需要客户端软件
- 常用的远程登录客户端软件有以下3款:
- Xshell(推荐使用)
- SecureCRT
- Putty
- 这些软件都是基于一种通用的安全通信协议进行远程登录:SSH协议(安全外壳协议)
- 常用的远程登录客户端软件有以下3款:
- 远程登陆linux服务器步骤
- 获知目标linux服务器的ip地址
- 客户端跟目标服务器两者能联网
- 需要一款支持SSH协议的客户端软件
- 服务器必须开启SSH服务
- 启动SSH客户端软件,填写目标服务器地址信息
- 连接成功后效果
-
- root是当前登陆者的用户名
- localhost是本服务器的主机名
- ~是表示登陆者所处的当前工作目录为用户的主目录/home/does
- 查看主机名
- 在shell提示符的@后有提示(这是因为环境变量配置才有显示)
- 使用hostname指令打印主机名
- 修改主机名
- nano /etc/sysconfig/network修改其中的hostname配置项
- HOSTNAME=hostnamenew(新的主机名)
- 注意:修改完成以后,需要重启服务器才能生效
- 要想立即生效,可以执行指令hostname hostnamenew,然后注销重新登录
主机名-ip映射
- 配置DNS
- 公网上有现成的DNS服务器,但是不能解析内网的私有域名(主机名),因而需要配置公司内部的私有DNS服务器,成本相对较高,实现起来比较麻烦
- 服务器本地映射
- 服务器网络寻址时默认是现在本地的hosts文件中查找IP映射,通过修改hosts来映射局域网内部的主机名非常方便 实现方法,将局域网内的每一台主机的"hostnameip"写入每一台主机的hosts文件中
- nano /etc/hosts
- 192.168.xxx.xxxservername
- 列出系统所有应用服务状态
- service --status-all
- 查看指定服务运行状态:
- service servicename status
- 启动服务:
- service servicename start
- 停止服务:
- service servicename stop
- 列出所有服务的随机自起配置:
- chkconfig --list
- 关闭服务的随机自起:
- chkconfig servicename off
- 开启服务的随机自起:
- chkconfig servicename on
- 常用示例:
- 重启网络服务 service network restart
- 停止httpd service httpd stop
- 启动 httpd service httpd start
- 关闭防火墙服务 service iptables stop
- 关闭防火墙自动启动 chkconfig iptables off
- 查看网络连接信息
- 指令:netstat net 网络 stat status状态
- 常用示例:
- netstat -natp
- netstat -nltp
- netstat -naup
- 参数解释:
- -a 显示所有连接和监听端口 all -l 只显示监听进程listen
- -t (tcp)仅显示tcp相关选项
- -u (udp)仅显示udp相关选项
- -n 拒绝显示别名,能显示数字的全部转化成数字。
- -p 显示建立相关链接的程序名
- 常用示例:
- 指令:netstat net 网络 stat status状态
- Linux系统文件系统目录结构
- 主要目录:
- bin (binaries)存放二进制可执行文件
- sbin (super user binaries)存放二进制可执行文件,只有root才能访问
- etc (etcetera)存放系统配置文件
- usr (unix shared resources)用于存放共享的系统资源
- home 存放用户文件的根目录
- root 超级用户目录
- dev (devices)用于存放设备文件
- lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
- mnt (mount)系统管理员安装临时文件系统的安装点
- boot 存放用于系统引导时使用的各种文件
- tmp (temporary)用于存放各种临时文件
- var (variable)用于存放运行时需要改变数据的文件
tips:输入命令的时候多用tab键来补全,一方面可以加快速度,另一方面减少错误
- 1.文件夹操作
- ls /path/查看目录信息
- ls -l /path/ 查看详细信息,等价于 ll
- ls a /path/ 查看隐藏文件
- pwd 查看当前所处目录的绝对路径
- cd /path 切换目录 (cd /) ,如果不带参数则切换到用户主目录
- mkdir ./test 创建文件夹 )
- mkdir -p ./a/b/c 如果要创建的文件夹的父目录不存在,则自动创建
- rmdir 删除空文件夹 (只能删除空文件夹)
- rm -r /a/b (删除非空文件夹) rm filename (rm 删除文件 rm -r 删除文件夹 rm -rf 强制删除文件或文件夹)
- 2.创建文件(常见三种方式)
- touch a.avi 创建一个空文件 echo "does is so cool" > does.txt把“>”左边的输出放到右边的文件里去
- nano aaa.txt 用文本编辑器编辑一个文件并且保存
- 3.移动文件、修改文件名,删除文件和文件夹,复制文件夹
- mv a/wenjian1.txt b/file1.txt (移动文件的同时还修改了文件名)
- rm: remove 删除
默认rm只能删除文件,并不能删除文件夹
删除文件夹: rm -r xxxx
rm -f force
rm -rf xxx 生产上一定要慎用,很容易导致血案的发生 - cp: copy
cp a.txt a_cp.txt 是更改文件的时间戳的
cp -p a.txt a_cp2.txt
拷贝多个文件:cp a.txt b.txt 1
拷贝目录:cp sub_dir 1 是不成功的 cp -r sub_dir 1 -r表示递归操作
- 5.查看文本文件内容
- cat log.a.txt 一次性显示整个文件内容
- more log.a.txt 可以分页看(翻页:空格,往回翻:b ,退出: q)
- less log.a.txt 不仅可以分页,还可以方便地搜索,回翻等操作(翻页:空格,往回翻:↑,往下翻:↓,退出:q或者 Ctrl+C,小写gg连按两次,跳到最前,大写GG跳到最后)
- tail -10 a.txt 查看文件的尾部的10行
- tail -f a.txt 实时刷新显示文件的尾部,这条命令对于观察调试程序的运行非常重要
- head -20 log.a.txt 查看文件的头部20行
- 1.文件归档
- tar -cvf testdir.tar testdir/
- 参数释义:c表示创建一个打包文档v表示显示打包的进度f表示要打成的tar包的名字
- tar xvf testdir.tar
- 参数x:表示从一个现存的tar文件中进行解包操作
- tar -cvf testdir.tar testdir/
2.文件压缩
- gzip testdir.tar 对tar包进行压缩 gzip –d testdir.tar.gz对tar包进行解压
- 3.归档并压缩/解压
- tar -zcvf testdir.tar.gz testdir/
- tar -zxvf testdir.tar.gz -C Downloads/ 解压到指定的Downloads目录下
- zip test.txt.zip test.txt
- unzip test.txt.zip
- 1.linux系统中对文件权限的描述机制
- r表示读
- w表示写
- x表示执行
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 还可以这样去理解,r的数值是4,w是2,x是1,那么可以衍生出0 1 2 3 4 5 6 7 这几种组合
- 思考:
- 777(rwxrwxrwx)666(rw-rw-rw-)567(r-xrw-rwx)456分别对应什么权限?
- 2.修改权限
- chmod u+rwx file给file文件添加或取消权限
- +号表示添加
- -号表示去除
- u表示所属用户
- g表示所属组
- o代表其他人
- a代表所有
- 也可以使用数值来进行赋权
- chmod 567 file
- 5--->101--->4+1--->r-x
- 6--->110--->4+2--->rw-
- 7--->111--->4+2+1--->rwx
- chmod 567 file
- chmod u+rwx file给file文件添加或取消权限
- 3.通过实例理解rwx三种权限的含义
- r读权限
- 对文件:是否可以读取文件的内容cat
- 对文件夹:是否可以列出文件夹内的子节点信息ls
- w写权限
- 对文件:是否可以修改文件的内容>> nano
- 对文件夹:是否可以更改文件夹的子节点 mkdir
- x可执行权限
- 对文件:是否可当做一个命令或者程序来执行
- 对文件夹:是否可cd进入
- r读权限
- 示例:useradd xxx
- 必须设置密码才能正常登陆 passwd xxx
- userdel test ----这样删除的时候,用户的主目录会被保留
- userdel -r test -----删除用户的同时删除用户的主目录
- 指令usermod
- 参数:
- -l(login)修改用户名usermod -l a b(将b改成a) -g(group)修改用户组usermod -g root xxx 将xxx的组改为root组
- 创建用户组
- groupadd xxx
- 删除用户组
- groupdel xxx
- 修改用户组属性
- groupmod -n(name)newname groupname
- 查看用户所属的组
- groups xxx
- top 查看实时刷新的系统进程信息
- ps -ef 查看系统中当前瞬间的进程信息快照
- ps -ef | grep myshell.sh 搜索myshell进程的信息
- kill -9 pid杀掉进程(-9 表示强制杀死)
sudo权限配置
root用户因为具有不受限制的权限,使用不慎可能对系统造成不可估量的损害,因而,生产实际中,轻易不要使用su去切换到root的身份
如果普通用户需要使用一些系统级管理命令,可以使用sudo来执行,比如 sudo nano /etc/profile
给普通用户赋予sudo权限,配置方法如下:
例如,要给test用户赋予sudo任何指令(或某条指定的命令)的权利,则编辑sudoers文件 nano /etc/sudoers
在其中加入需要赋予权限的用户
……
root ALL=(ALL) ALL
#让test用户可以用root身份执行所有指令
test ALL=(ALL) ALL
……
- 检查是否生效
- sudo -lU test
- 指令:nano /etc/inittab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
- 3表示全功能状态的字符界面
- 5状态表示图形界面
- 一般设置为3,如果在3的模式下,需要使用图形界面,可以使用命令startx
- grep
- grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本内容,并把匹配的行打印出来
- 示例:
- grep ‘EOF’ ./*
- grep -c ‘EOF’ ./* 显示匹配到的数量
- grep -r ‘EOF’ ./* 指定对子目录也进行搜索
- grep -l ‘EOF’ ./* 只显示命中的文件名
- grep -n ‘EOF’ ./* 显示命中的行号
- grep -lr ‘EOF’ ./* 对子目录也进行搜索并且显示命中的文件名
- grep -ld skip ‘EOF’ ./* 显示指定不要搜索子文件夹
- 参数含义:
- -r 递归搜索子目录
- -l 只列出有匹配行的文件名
- -n 列出匹配行的行号
- -d skip 不搜索子文件夹
- 常用grep跟其他命令组合使用来查找我们关心的信息
- 示例:
- service --status-all | grep 'httpd'
- netstat -nltp | grep '22'
- find
- 强大的查找工具,可根据文件名,文件所有者,创建时间,文件大小,文件类型,文件权限信息等各种条件来查找匹配的文件,功能非常强大,以下列出的是常用的几种示例:
- 按照文件名称查找(可支持正则表达式)
- find ./ -name '*.txt'
- find ./ -name ‘install*’
- wc
- 统计文本信息(行数,词数,字符数)
- wc -c/w/l
- date
- 查看系统日期时间
- echo
- 输出字符串或变量的值
- whoami
- 查询当前登陆者的身份
- which
- 查询指定命令的$PATH路径