linux 笔记达内02
复习主要内容: 1、安装Linux系统 安装方式 VMware 硬件配置 CPU中央处理器 Memory内存 Disk磁盘 Network网络 分区 超级用户root账号 选装软件vi等 2、配置网络环境 让Linux系统 和 其它主机通信 C S 本机 SSH 客户端 <-网络-> Linux系统 服务器 命令 远程登录 3、常用的Linux命令 分类整理、记忆 1)查看ip地址:ifconfig 2)配置ip和网络:netconfig 3)重启网络服务:service network restart 4)查看网络是否可达:ping 对方IP 5)结束控制台当前进程:ctrl+c 6)关闭防火墙:iptables -F 7)退出登录:exit 8)查看日期:date 9)查看日历:cal cal 本月日历 cal 2022 全年日历 cal 9 2022 某年某月 10)查看用户身份 id 我是谁? 最初登录用户身份:who am i 当前用户详细身份:id 当前用户名:whoami 11)查看当前在线用户情况:who 12)查看当前工作目录:pwd 我在哪里? 13)查看目录下内容:ls 我有什么?文件/目录 14)查看目录下内容详细属性:ls -l 15)改变工作目录:cd 目录路径名 想去哪里? 绝对路径、当前路径、相对路径 特殊目录名: . 当前目录 .. 上一层目录 一、软硬件的体系结构: 1、硬件体系: IPO Input Process 处理 Output 输入设备 ----- 主机 ----- 输出设备 (键盘、鼠标等) (显示器、打印机等) (CPU、内存) 硬盘 I/O设备 2、软件体系:主流的B/S、C/S架构为例 三层架构 面试题:如何搭建一个测试环境? 根据需求,具体问题具体分析 被测系统 SUT ___________________________________ Client -网络- Application Server -网络- DB Server 客户端 应用服务器 数据库服务器 1)硬件 PC、移动设备 服务器、工作站、 服务器、工作站、 小型机 小型机 2)操作系统(系统软件) PC:Windows/Linux/Mac Linux/Unix Linux/Unix 移动:Android/IOS/WP 3)中间件(提供特殊的公共服务的软件) 无 Web/应用服务器软件 DBMS数据库管理系统 Tomcat/Weblogic容器 Mysql/Oracle/DB2 4)应用程序 B/S: 浏览器 部署Web App 搭建数据库 C/S: 各种App 企业级应用 维护表、数据等 web01.war包 执行sql脚本 提示:多和开发方沟通,共同搭建整个测试环境; 包括系统架构、需求方、产品经理、项目经理、测试经理、系统管理员SA、数据库管理员DBA等,搭建环境是整个团队的任务。 软件 = 程序 + 文档 程序 = 数据结构 + 算法 列表 字典 遍历 以什么方式存储数据 以什么方式使用数据 程序:比如一个可执行的文件:calc.exe 计算器 进程:Process 正在运行的程序 pid 系统为新创建的进程分配唯一的编号 进程号 二、Linux/Unix系统基本层次结构 从外到内: 应用程序(用户)<-> Linux操作系统 <-> 硬件 (Shell <-> Kernel 内核) 1、shell (直译:外壳) 命令解释器(翻译、解释命令) 介于用户和内核之间,提供与系统的命令交互; shell本身也是一个进程,具有启动的命令 表现形式:终端、命令行窗口 常见的shell: bash csh sh ksh ... (都是命令 可执行文件) 类似于Windows: cmd 命令行窗口 C:\windows\system32\cmd.exe 可执行文件 查看当前是什么shell,使用查看进程的命令:ps 不加选项 -ef 只能查看部分进程: 进程id 伪终端号 启动该进程的命令名 PID TTY TIME CMD 2487 pts/0 00:00:00 bash 当前默认shell进程 2523 pts/0 00:00:00 ps 可以切换shell: csh sh bash PID TTY TIME CMD 3437 pts/0 00:00:00 bash 3476 pts/0 00:00:00 csh 3497 pts/0 00:00:00 sh 3499 pts/0 00:00:00 bash 3520 pts/0 00:00:00 ps 不同shell,区别在于使用方式有差别,支持的命令基本一致 shell的切换的本质就是在当前shell进程中启动子进程; exit可以结束当前进程,返回父进程; 最后一次exit表示退出登录; 刚登录成功后,系统会默认启动一个shell进程,当前是bash(Login shell 登录shell) bash是目前常用的shell,符合大众习惯。 shell环境下可以写脚本:shell编程 -- shell脚本 目的:对系统进行自动化管理、对测试进行辅助管理 将一些命令联合编写为代码,有逻辑的运行。 对命令的自动化的编程。 2、Kernel 内核:和硬件交互,比较底层,将硬件管理起来,将硬件屏蔽掉。比如:swap space 交换区(虚拟内存)、文件系统File System等。 Linux内核的五大功能: 1)进程/处理器管理 2)内存管理 3)接口管理 4)文件管理 5)设备管理 查看当前内核版本号:uname -r 2.4.20-8 格式:主版本号.次版本号.修订次数 2.4 2.5 2.6 偶数相对稳定 追求比较新,但一定要稳定的版本 比如:JDK1.6 1.7 1.8 产品 一般推荐使用滞后一个版本,相对稳定 3、File System 文件系统:对Linux中的文件进行管理 文件:包括文件、目录、外部设备等都被系统当做文件来管理。 1.txt dir1 /dev/sda1 install.log /root /dev/sda 好处:一视同仁,便于管理 文件具有大量属性:类型、权限、属主、属组、大小、最后一次修改时间 文件的内容:保存的数据 目录的内容:管理子文件、子目录的指向关系 (关系表) 三、Linux的通用特性 1、支持多用户 2、支持多任务 多进程 3、支持用户界面 命令行、图形界面 4、硬件的支持 5、网络连接 6、可安装网络服务 7、应用程序的支持 四、Linux/Unix常用命令 1、执行命令的原理: 执行命令,就会执行一个可执行文件,会启动一个进程; 比如:ps pwd ls date ... 在/bin目录下 sleep 5 启动sleep进程,等待5秒 单位:秒 自动化脚本中,经常需要在步骤之间模拟等待间隔; 结束当前进程:ctrl + c 立刻交回终端 # sleep 3000 挂起当前进程:ctrl + z 也会交回终端 查看后台任务:jobs [1]+ Stopped sleep 3000 # sleep 5000 # ctrl + z # jobs [1]- Stopped sleep 3000 [2]+ Stopped sleep 5000 将后台任务前置继续运行:fg 任务号 # fg 1 # ctrl + c # fg 2 # ctrl + c 2、命令的帮助手册:man 命令名 Linux/Unix中提供命令的帮助手册 manual 提示:手册中都是英文、专业术语较多,涉及系统知识 建议选择的查看,比如关心某选项,重点查看。 daemon 精灵、精力充沛的人 系统为精灵进程、守护进程,系统启动后默默一直提供基础服务。 比如:查看ls命令的用法 # man ls 控制方法: 空格 -- 翻页 回车 -- 跳行 q -- 退出 quit ls - list directory contents 显示目录内容 -l use a long listing format 使用长格式列表 显示文件/目录的详细属性列表 练习:查看man手册,找出如何查看所有进程 ps命令 ps -ef 以全列表格式显示所有进程信息 -e select all processes -f does full listing 全格式 3、查看目录下内容:ls 查看目录下的内容 1)ls -l 以长格式显示文件/目录的详细属性 当前Linux中简写为ll,不推荐使用,ls -l 更通用 文件类型 权限 属主 属组 文件大小 最后一次修改时间 -rw-r--r-- 1 root root 989 3月 13 05:33 anaconda-ks.cfg 硬链接数 文件/目录名 文件类型:- 文件 d 目录 权限:rw-r--r-- 属主:该文件属于哪个用户 属组:该用户属于哪个组 文件大小:单位 Byte 面试题:查看当前f1文件的权限? 命令名 选项 参数 ls -l f1 针对当前目录下的f1文件查看详细属性,包括权限 2)ls -a a就是all 所有的 显示目录下所有内容,包括隐藏的文件和目录; 规律:凡是以 . 开头命名的文件或目录,具有隐藏属性 比如:. .. 任何目录下都有的隐藏目录 .bash_profile bash环境下的配置文件 3)ls -al 或 -la 选项可以组合搭配使用(功能的叠加) 既能查看所有内容,还能查看内容的详细属性 4)ls -R 将目录层次展开,包括目录目录下文件 5)ls -t 按照时间先后排序(最后一次修改时间)time 经常关注最近修改过的文件,比如日志文件 6)ls -lt 组合使用 7)ls -F 查看文件类型 普通文件 无后缀显示 目录 /结尾 可执行文件 *结尾 分别到不同目录下,查看文件类型: cd /root cd / cd /bin 8)ls -ld 查看当前目录的属性 directory 目录 查看/root目录属性,目前就在/root下 之前做法:先回到上一层目录,再查看 ls -l cd .. ls -l drwxr-x--- 4 root root 4096 3月 15 10:39 root 目录名 目前做法:在当前目录中直接查看 ls -ld drwxr-x--- 4 root root 4096 3月 15 10:39 . 代表当前目录 面试题:如何查看当前目录的权限? ls -ld 4、清屏:clear Windows: cls Oracle的Sqlplus: clear screen C语言:70后 Linux/Unix的发展和产品介绍: Unix: 1969 厂商: 产品: IBM AIX SUN Solaris HP UX Linux: 1991 1994 Linux之父:Linus 规范、标准 (Linux is not Unix) 吉祥物:企鹅 李纳斯·托瓦兹 内核程序开源的、免费的 厂商:Red Hat 红帽 将服务捆绑销售 Red Flag 红旗 SUSE Ubuntu CentOS IOE架构:IBM服务器、AIX + Oracle DB + EMC磁盘阵列 (主机)(Unix)中间件 数据库 数据存储 优点:服务好、功能强大、全面 缺点:成本高 BAT推崇“去IOE”: 比如LAMP: 普通PC的集群作为服务器主机 + Linux + Apache 服务器软件 + Mysql DB + PHP 开发语言 或 Java或Python 优点:成本低、开源(二次开发)、可定制、灵活 缺点:技术成本高 5、磁盘分区 /dev/sda 硬盘分为三个区: 分区设备名 挂载点 类型 大小 /dev/sda1 /boot ext3 100M /dev/sda2 无 swap 2G 系统内核管理 /dev/sda3 / ext3 6G 分区设备名规律: /dev是设备目录,下面有设备文件 device Linux系统将所有设备,比如硬盘分区当做文件来管理 /dev/hda1 1) hd -- IDE硬盘,性能一般 2) a -- 第一块硬盘 3) 1 -- 第1个分区 /dev/sdb3 1) sd -- SCSI硬盘,性能高 2) b -- 第二块硬盘 3) 3 -- 第3个分区 笔试题:请分析以下名称的含义? /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb1 /dev/sdb2 分析:Linux系统中设备目录下的设备文件 表示2块SCSI风格的硬盘,第1块3个分区,第2块2个分区 a b sd 1 2 3 1 2 6、查看磁盘空间情况:fdisk -l 应用场合:当系统出现运行突然变慢等性能问题时,可以查看Linux服务器的磁盘空间,确定是否出现空间不足导致的性能瓶颈。比如:日志文件、数据库数据、文件上传不断占据磁盘空间。 练习:查看磁盘空间的情况 Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 268 2048287+ 82 Linux swap /dev/sda3 269 1044 6233220 83 Linux Blocks:块 数据块 是为了系统更好分配存储范围 Id:idle 空闲的磁盘空间 83% 补充:df -k -k表示 以KB为单位 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda3 6135236 1064864 4758712 19% / /dev/sda1 101089 9425 86445 10% /boot none 515444 0 515444 0% /dev/shm 补充:mount 挂载、查看挂载情况 mount 设备名 挂载点 mount /dev/sda1 /boot 将/dev/sda1第1个分区挂载到/boot目录下管理 安装系统时自动配置好 执行mount:查看挂载情况 /dev/sda3 on / type ext3 (rw) none on /proc type proc (rw) usbdevfs on /proc/bus/usb type usbdevfs (rw) /dev/sda1 on /boot type ext3 (rw) none on /dev/pts type devpts (rw,gid=5,mode=620) none on /dev/shm type tmpfs (rw) 文件包括:名称、属性、内容 名称:路径名 绝对、相对 属性:ls -l 内容:文件中存储的信息 7、查看文件的内容:cat 文件路径名 ... 适合看小文件,因为不能翻页 # cd /root 技巧:cd /r Tab 自动补全 /root # ls # cat install.log cat ins Tab # date # cal # cal 12 2020 平时命令执行的结果默认向 终端 输出。(标准输出) 技巧:> 输出重定向 (Windows/Linux/Unix中通用) 将命令输出的结果改变输出到文件中,而不是终端 # date > 1.txt 自动新建一个文件1.txt,将date的结果写入1.txt文件中 便于保存执行结果 # ls -l 1.txt 查看1.txt文件的属性 -rw-r--r-- 1 root root 29 3月 17 20:24 1.txt # cat 1.txt 查看1.txt文件的内容 二 3月 17 20:24:24 CST 2020 规律:OS认为,文件有结束符 EOF 占1个Byte End Of File 文件底层存在文件指针,在读取文件数据时可以偏移位置; 文件存在开始指针、结束符 # cal > 1.txt 覆盖 # cat 1.txt > 输出重定向,新的会覆盖旧的 >> 输出追加重定向,向原有文件结尾追加内容 # date >> 1.txt # cal 12 2020 >> 1.txt # cat 1.txt 用途:在Windows/Linux系统中,我们可以将某些命令输出的结果写入到文件中保存,作为后续分析的依据,比如日志、测试结果等。 8、目录路径的常见概念 1)绝对路径:从/开始表示的具体的路径名 /root 目录名 /etc /root/1.txt 文件名 /etc/passwd 查看/etc/passwd文件 的详细属性 # ls -l /etc/passwd -rw-r--r-- 1 root root 1283 7月 10 19:42 /etc/passwd 2)当前路径:当前所在目录的路径名 pwd可查看 比如目前在 /root 3)相对路径:相当于当前路径表示的新路径 1.txt ../etc/passwd ..回到/目录下,进入ect中找到passwd 比如目前在/etc下 (当前路径),需要表示/root/1.txt 1) 绝对路径:/root/1.txt 2) 相对路径:../root/1.txt 4)主目录:用户登录系统后,默认所在的目录 Home Directory(家目录) 普通用户在其主目录下拥有大量权限,出了此目录,将会处处受挫; 在创建新用户时,会在/home目录下新建该用户的主目录,其目录名就是用户名; root用户的主目录很特殊,就是/root; 查看用户账户文件:/etc/passwd 每一行对应每个系统账户的记录信息 每一列表示每个账户的属性 # cat /etc/passwd 用户名:口令占位符:uid:gid:描述信息:主目录:登录shell root:x:0:0:root:/root:/bin/bash uid: 用户id 用户身份的唯一标识 root都是0 gid: 组id 登录shell: bash 用户刚登录后默认使用的是bash 技巧:快速回到主目录 cd 回车 或 cd ~ 回车 说明:~ 代替用户的主目录 /root 技巧:查看~的值 echo 名称 # echo ~ echo 本意:回声 # ehco Hello 原样返回 # echo $PATH echo $系统环境变量名 查看系统环境变量PATH的值 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/usr/bin/jdk1.6/bin PATH的作用:命令的搜索路径 我们可以将常用的命令所在的路径名添加到PATH的值中(Windows通过分号分隔,Linux/Unix通过冒号分隔),越靠前的越优先找到,就可以在命令行中使用相对路径简化对命令的表达,否则会提示命令找不到。 比如 ls 在 /bin下 /bin/ls 5)当前目录: . cd . 意义不大,还在当前目录 1.txt 相对路径 ./1.txt 代替绝对路径 /root/1.txt 6)上一层目录: .. cd .. 回上一层目录 cd ../.. 连退两层目录 9、创建目录:mkdir 目录路径名 # cd 回到root的主目录 /root # pwd # mkdir test 创建一个test目录 # ls -l drwxr-xr-x 2 root root 4096 4月 26 15:44 test # cd test # ls 什么都没有 # ls -la 只有 . 和 .. 练习:在test目录中继续创建其它目录层次 # pwd 在/root/test下 # mkdir dir1/dir2 mkdir: 无法创建目录‘dir1/dir2’: 没有那个文件或目录 注意:Linux/Unix中,需要加-p选项,才能一气呵成 # mkdir -p dir1/dir2 # ls -R 查看目录下层次 # ls -aR 包括隐藏资源 # cd dir1 ls -al cd dir2 ls -al # pwd 在/root/test/dir1/dir2下 回到test下: # cd ../.. 或 cd ~/test ~就是/root /root/test # mkdir dir3 dir4 dir5 依次创建多个目录 在主目录下新建一个game目录: # mkdir ~/game # cd # ls 结论:操作的关键在于--如何表达路径名 技巧:通过startx 切换到图形界面 # startx 在服务器中启动图形界面: 桌面: root主目录 右键 -> 新建终端 shell 执行命令 放大: ctrl shift + 缩小: ctrl - 返回字符界面:小红帽 -> 注销 10、新建文件:touch 文件路径名 说明:如果文件不存在,创建一个新的、空的文件; 如果文件存在,只会修改文件的最后一次修改时间。 # cd ~/test # date > 1.txt 通过重定向生成一个1.txt文件 # ls -l 1.txt 查看文件属性 # cat 1.txt 查看文件内容 # touch 2.txt 创建一个空文件 # ls -l *.txt 查看所有.txt文件的属性 # cat 2.txt # touch 1.txt # ls -l *.txt 1.txt最后一次修改时间 更新了 # cat 1.txt 文件内容不变 11、Linux中命名规则、规范 1)区分大小写 F1 f1 2)不能使用特殊字符: / * % " $ # 空格 ... 3)以.开头的,具有隐藏属性 4)如果无特殊要求,后缀没有要求,后缀起到见名知意的作用: /etc/passwd 文件 特殊要求的: .java .c .py .cpp .html .css .js .php .xml .json .class .pdf .doc .docx .xls .zip .jar ... 没有特殊要求的:普通文本 1.txt f1 f1.abc 建议:比如shell脚本,建议使用.sh结尾 见名知意 Tomcat服务器 bin/startup.sh 启动服务器的命令、shell脚本 启动项 12、拷贝文件:cp 源文件路径 新路径 (copy)目的:备份 文件的内容一样的 # cp 1.txt 11.txt 将1.txt备份为11.txt # ls -l 1*.txt 查看1开头 .txt结尾文件属性 # cat 1.txt 11.txt 依次显示多个文件内容 13、移动文件:mv 源文件路径 新路径 (move)本质:改变文件的绝对路径名,就是重命名 # mv 11.txt 22.txt 重命名 源文件路径:/root/test/11.txt 新路径: /root/test/22.txt 综合练习:在~/test下,新建d1和d2目录; d1目录下新建1.txt文件,文本内容Hello; 对文件进行备份、重命名操作。 1)在~/test下,新建d1和d2目录 # cd ~/test # mkdir d1 # mkdir d2 或 mkdir d1 d2 2)d1目录下新建1.txt文件,文本内容Hello # cd d1 # pwd 在/root/test/d1下 # touch 1.txt # ls -l 1.txt # echo Hello >> 1.txt 3)将d1下的1.txt备份为11.txt # cp 1.txt 11.txt 4)将d1下的1.txt备份到d2下,也叫1.txt # cp 1.txt ../d2/ # cd ../d2 # pwd 在/root/test/d2下 # ls -l # cat 1.txt 5)将d1下的11.txt备份到d2中,还叫11.txt # cp ../d1/11.txt . 等同于:/root/test/d2/ 6)将d1下的1.txt备份到d2中,叫111.txt # cp ../d1/1.txt ./111.txt 等同于:/root/test/d2/111.txt 关键:如何写好路径名 7)将d1下的11.txt移动到d2中,叫22.txt 本质:重命名 # mv ../d1/11.txt ./22.txt 等价于/root/test/d1/11.txt /root/test/d2/22.txt # ls -l # cd ../d1 # ls -l 14、删除文件和目录 1)删除文件:rm 文件路径名 (remove) rm -f 文件路径名 关闭交互 # rm 22.txt 有交互 y 删除 n 不删除 # rm *.txt 删除所有.txt文件 多次交互 # rm -f *.txt 关闭交互,删除所有.txt文件 2)删除空目录:rmdir 目录名 # cd ~/test # rmdir d2 非空,不能删除 # rmdir d1 为空,可以删除 3)删除非空目录: rm -r 目录名 存在交互 rm -rf 目录名 关闭交互,删除非空目录 # rm -r d2 y n # rm -rf d2 面试题:Linux系统中如何强制删除一个文件、强制删除一个非空目录? 思路:强制删除,就是关闭交互进行删除 -f 删除文件:rm -f 文件名 删除目录:rm -rf 目录名 练习:将命令进行归类,说明含义、命令写法