###### tags: `learn` # Linux 通用基础 别人的笔记文件:E:\Processing\Linux\linux教程_20141002.pdf - [x] 3/2:完成第一次复习!接下来可以看桌面的书了! ## 1. BackGround  安装相关的包都在我的百度云里面有了!VMware + ubuntu **网络设置**:  **虚拟机快照(回滚)**  --- ## 2. Linux常用命令 实际上有超过200个命令,但实际上我们常用的就那么几个,所以我们只需要记住那几个,其余命令在需要使用时候查阅便可。     ### 运行级别  > 就是使用 init x 来改变我们的可视gui。 > 查看运行级别: runlevel --- ### 文件目录指令            > 这里的echo就相当于是编程语言中的return或者print!   > 一个箭头是覆盖(也就是'w'), 两个箭头是追加(也就是'a')  > 相当于创建快捷方式!  --- ### 搜索查找类指令     > 注: grep也可以利用参数 -v 进行反向查找(就是查找不带后面跟着的字符的) > 例子如下:  **显然我第一次搜索的结果是grep进程本身;但是很明显我们不是想搜索本身进程,所以就 -v grep 把带grep的结果全部排除!就可以实现这个效果。** --- ### 时间日期类指令   --- ### 压缩/解压类指令      --- ## 3. Linux目录     --- ## 4. 远程登录  Xshell可以远程登录,而Xftp可以实现文件传输。 链接方式简单,在linux虚拟机上输入 ifconfig查询ip后利用ip连接即可。 --- ## 5. Vim编辑器     --- ## 6. 开关机、用户指令等             --- ### 权限  > 第0位的 '-' 代表的是普通文件。    **当然我们也可以修改权限!**   案例:    --- ### 修改文件所有者与所在组   实践:跟着玩玩linux  --- ## 7. 定时任务调度 ### 1. crontab 周期性反复执行任务        ![Uploading file..._b5bpc44uo]() --- ### 2. at 一次性执行任务      --- ## 8. 磁盘分区,挂载机制  > 意思就是,在linux系统的目录实际上和我们的硬盘是相互对应挂载的!可以通过: lsblk 指令查看。如我的就是下面这样:   > 可以看出来,我的电脑都是SCSI硬盘!且只有一块硬盘挂载!(因为只有sda没有sdb!)  ### 挂载经典案例:增加一块硬盘      ### 查询磁盘/指定目录的使用情况     > 为什么上面的指令是这么写呢???别忘了! > 因为所有文件的十位描述分别为开头的'd'或者'-'加上后面的九位o,g,e权限。其中'd'对应目录, '-'对应文件!所以这里直接用grep正则化筛选就ok拉! > 后面的wc -l 是wordcount,就把筛选出来的东西全部数了一遍!  --- ## 9. 网络配置    ### 网络环境配置方案  > 为什么不好?因为服务器的ip得要是固定的!随机的ip无法在工作中作为服务器!  ### 设置主机名和host映射  > 那么问题就来了!如果我知道我的主机名但是不知道其IP地址,如何映射查找到此主机?    --- ## 10. 进程管理(重点)      ### 终止进程  ### 查看进程树:pstree  --- ## 11. 服务管理与监控    ### systemctl 指令  ### 动态监控进程   ### 监控网络状态   --- ## 12. RPM管理(注意,ubuntu里并无rpm, 用的都是deb)     ### yum与apt(ubuntu是apt, centos是yum,但实际操作基本一致)  > 使用ubuntu则将上面的yum全改为apt即可! > 可见下面我用ubuntu的例子。  **补充:apt**   > 现在的语法的话,直接apt就可以,不需要后面的-get --- # shell编程 ## 基础知识     > **注意!!! shell编程中等号间不可以打空格!!!**   ### 设置环境变量  > 我发现Ubuntu实际上不需要第二步???  > 尝试使用shell编程输出   ### 多行注释   > 可以发现,注释掉的内容就不显示了!这和其他语言的多行注释是一个道理。只是操作没这么简便! ### 位置参数变量    > 其实就是利用$加上数字表示第几个参数,然后在控制台调用时候输入参数而已!!!看起来很吓人但原理和其他语言调用参数一个道理! ### 预定义变量    --- ## 逻辑部分 ### 运算符    ### 流程控制之条件判断:if       ### 流程控制之情况分支:case   ### 流程控制之循环遍历:for      ### 流程控制之循环遍历:while   ### read读取控制台输入    > 10s之内不输入则退出程序! ### 系统函数     ### 自定义函数   ## 综合案例   步骤: 1. 建立数据库mine(create mine) 2. 写shell脚本  4. 使用crontab -e 设置自动启动。  --- # Linux管理篇 ## 日志管理(没有看很细)          ### 内存日志  --- ## 定制自己的Linux    [详细步骤!参照老韩课程!](https://www.bilibili.com/video/BV1Sv411r7vd?p=127) --- ## linux系统备份与恢复 > 实体机不像虚拟机可以快照!  ### 1. 备份:dump    > 当备份为一个独立的文件系统(独立的分区)时,可以使用-u,如果只是备份目录下的文件时,不能使用-u --- 所以说他的案例1是错的!不能用u   > **注:Ubuntu的备份记录文件在上面的路径而不是ppt里那个!** ### 2. 恢复:restore     --- ## WEBMIN:可视化的命令行界面! 这一节介绍了可视化的命令行界面 webmin,只需在linux系统中安装后便可通过网页进行命令行界面的交互类操作。链接留在下面。 [Webmin的安装与功能介绍](https://www.bilibili.com/video/BV1Sv411r7vd?p=138) --- ## bt宝塔:提升运维效率的服务器管理软件   感觉比webmin还要强大些呢!阿里云就是用的这个! [bt宝塔的安装与功能介绍](https://www.bilibili.com/video/BV1Sv411r7vd?p=140) --- # 面试题 ### 1. 如何找回root密码? 1. 开机时按e进入编辑界面; 2. 找到Linux开始的行,在最后面输入: init=/bin/sh; 3. 输入完成后,ctrl+x进入单用户模式; 4. 输入mount -o remount,rw/; 5. 设置新密码! 6. 设置后再输入: touch /.autorelabel; 7. 输入: exec/sbin/init 等待新密码生效! ### 2. 韩p142-统计访问量和连接数!  code 1.    2.  老师代码:  --- ### 3. 韩p143-找回mysql的root密码  解决方法: 1. 查找my.cnf(在/etc/mysql目录下)  2. 在文件内输入skip-grant-tables跳过登录权限  3. 重启mysqld服务读取修改  4. 输入空密码进入sql,进去改密码! 在数据库里的mysql库-user表-authentication-string修改新密码就是!  5. 回到/etc/mysql目录,注掉开始的修改,重启服务就ok! --- ### 4. 韩p144-访问量排名  code     老师code:  --- ### 5.韩p144-tcpdump!  code  这样就可以不停打印! 然后在原先基础上使用 >> 保存即可!  --- ### 6.韩p145~147-系统权限划分!!(重要且有趣!!!) 1. 权限划分题  敞开谈!没有标准答案,为了表示自己是知道的,我们最好从文件权限含义(在文件与目录上)开始,然后慢慢谈!   +++++++++++ 2. 权限思考题(真他妈有趣!)  回答: 1.yny 2.nnn 3.ynn 4.yny - 对目录有执行权限才进得去目录,不然连目录都进不去! - 对目录有读权限才可以使用ls之类的指令! - 对目录有写权限才可以对目录内的文件进行增删! - 这些在上面都有 --- ### 7.韩p149-io读写监控  1. netstat:查看网络状态 2. lsblk:查看硬盘分区情况 3. systemctl:管理一系列服务状态 4. ps/top:静/动态查询任务情况 5. chkconfig:查看服务启动状态 6. crontab/at:设置定时任务  查看内存:top io读写:iotop 磁盘存储:df -lh / lsblk? 端口占用:netstat -tunlp 进程查看:ps -aux  --- ### 8.韩p150-统计文件个数 & 行数 1.  mine   +++++++++++++++ 2.  mine    ++++++++++ 3.   ++++++++++++++++ 4.  mine    --- ### Final.韩p152-Linux优化  --- # 追加:自己学习的补充! ## 1. awk的妙用 - [原文](https://www.linuxprobe.com/linux-awk-clever.html) 简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理,命令格式如下: ``` awk [-F 分隔符] ‘命令’ 这里的常用命令一般是 print ! (注意要用大括号{}括起来) -F 分隔符: 就是指定分隔符! ``` > [-F 分隔符]是可选的,因为awk使用空格,制表符作为缺省的字段分隔符,因此如果要浏览字段间有空格,制表符的文本,不必指定这个选项,但如果要浏览诸如/etc/passwd文件,此文件各字段以冒号作为分隔符,则必须指明-F选项! eg.  eg. 用awk 截取/etc/passwd中的用户名!  eg. 用awk 截取用户名以及登录记录!  --- ## [下面内容的源地址](https://www.cnblogs.com/xuxinstyle/p/9609551.html) ## 2. Find补充:查找一定时间内修改过的文件!  eg.  --- ## 3. shell code的一些常识 首先, **#!/bin/bash** 这里的 **#!** 实际上是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。 另外重复下, shell的多行注释: ``` 第一行前 :<<! 最后一行后 ! eg. :<<! echo 'New Skill? Nope!' my_name='WEi jH' echo "my_name = "$my_name"! \n" your_name='L_rui' echo "my name is $my_name and your name is $your_name" echo $my_name $your_name echo ${#my_name} # 检查字符串长度方式:加# echo ${my_name:2:5} # 字符串切片 ! ``` 并且,shellcode的echo语句的转义符同样为 \ 此外,很重要的一点:VIM怎么显示行号? ` :set nu` 并且,使用if检查条件是否成立时,常和test连用,即 ==if test 语句==    ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up