1. 在vim编辑时,按了ctrl + s后,再按ctrl + q就可以继续执行了。
退出:q(没有修改的退出) w(保存) wq(保存并退出) q!(强制退出,不保存修改)
1)拷贝当前行 yy,拷贝当前行下的5行 5yy,并粘贴(p)
3)在文件中查找某个单词[命令行下/关键字,回车查找,输入n就是查找下一个]
4)设置文件的行号,取消文件的行号 [命令行下 :set nu 和 :set nonu]
5)编辑 /etc/profile文件,使用快捷键到底文档的最末行[G]和最首行[gg]
6)在一个文件中输入 "hello",然后又撤销这个动作 u
7)编辑 /etc/profile文件,并将光标移动到20行 输入20 再shift+g
PS:命令的执行都是在正常模式,而不是插入模式下进行。
sync :把内存的数据同步到磁盘上,防止丢失数据
PS:当关机或重启时,都应先执行一次sync指令,把内存的数据写入磁盘,防止数据丢失
1)登录时尽量不用root账号登录,因为他是系统管理员,拥有最大权限,避免操作失误,可以利用普通用户登录,登录后再用"su - 用户名"命令来切换成系统管理员身份
2)在提示符下输入 logout即可注销用户,只对远程登录有用
1)添加用户 useradd [选项] 用户名 如:useradd guest 就会创建一个guest用户
也可以通过useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
b. 删除用户,但保留家目录 :userdel 用户名
c. 删除用户,同时删除家目录 :userdel -r 用户名
c. exit 退出切换的用户,回到root用户上
PS: su [user]切换到其他用户,但是不切换环境变量,su - [user]则是完整的切换到新的用户环境。
3)创建用户的同时附属的指定的组中:useradd -g 组名 用户名
4)修改用户组:usermod -g 用户组 用户名
5)/etc/passwd 用户配置文件,记录用户的各种信息
如:zwj:x:1002:1003::/home/zwj:/bin/bash
root:x:0:0::/home/root:/bin/bash
用户名:口令:用户id:组id::家目录:shell
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
7)/etc/group 组配置文件,记录Linux包含的组的信息
常用运行级别是3和5,要修改的运行级别可改文件/etc/inittab的id:5:initdefault:这一行中的数字
systemctl set-default multi-user.target
systemctl set-default graphical.target
ls -a 显示当前目录所有的文件和目录,包括隐藏的。
ls -a -l 以列表的形式显示所有文件和目录,包括隐藏的
cd ../home 回到上一级路径下home目录中
mkdir /home/dog 在/home路径下创建dog目录(只能创建单级目录)
mkdir -p /home/animal/tiger 在/home路径下创建animal目录并在animal目录下创建tiger目录(创建多级目录)
rmdir /home/dog 删除/home目录下的dog目录(删除的是一个空目录)
rm -r /home/dog(删除一个非空目录,dog目录下有一个test.txt文件)
touch 1.txt 创建一个1.txt的空文件
touch 1.txt 2.txt 创建了1.txt和2.txt两个文件
cp aaa.txt bbb/ 把当前目录下aaa.txt文件拷贝到当前目录下的bbb目录下(拷贝单个文件到指定的目录中)
cp -r test/ zwj/ 把当前目录下的test目录拷贝到当前目录下的zwj目录下(循环拷贝内容到指定的目录下)
\cp -r test/ zwj/ (强制覆盖)把当前目录下的test目录拷贝到当前目录下的zwj目录下(循环拷贝内容到指定的目录下)
cp -r first/. second/ 把路径first下面的内容拷贝到second目录下,如first目录下有a.txt和b.txt两个文件,second目录下为空,结果是second目录下有a.txt和b.txt两个文件
rm aaa.txt 删除当前目录下的aaa.txt文件(需要确认)
\rm aaa.txt 强制删除当前目录下的aaa.txt文件(不需要确认)
rm -f aaa.txt 强制删除当前目录下的aaa.txt文件(不需要确认)
rm -r bbb 删除当前目录下的bbb目录,依次进入目录进行删除
\rm -r bbb (强制删除)删除当前目录下的bbb目录,依次进入目录进行删除
rm -rf bbb (强制删除)删除当前目录下的bbb目录,依次进入目录进行删除
mv oldNameFile newNameFile 重命名
mv /temp/movefile /targetFolder 移动文件
cat /etc/profile 查看/etc/profile文件
cat -n /etc/profile 查看/etc/profile文件,并显示行号
cat -n /etc/profile | more 查看/etc/profile文件,并显示行号,分页显示,回车显示下一行,空格键显示下一页
11)more 基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本的内容
12)less 分屏查看文件内容,与more指令类似,但是比more指令更加强大,并不是一次将整个文件加载之后显示,对于显示大型文件具有较高的效率。
>> 追加,不会覆盖文件原来的内容,而是追加到文件的尾部
a. ls -l > 文件 列表的内容写入文件a.txt中(覆盖写)
ls -l > a.txt 将ls -l 的显示内容覆盖写入到a.txt文件,如果文件不存在,就创建该文件。
b. ls -al >> 文件 列表的内容追加到文件aa.txt的末尾
ls -l >> b.txt 将ls -l 的显示内容追加写入到b.txt文件,如果文件不存在,就创建该文件。
c. cat 文件1 > 文件2 将文件1的内容覆盖到文件2中
e. cal >> /home/mycal 将当前日历信息追加到/home/的mycal文件中
16)head 显示文件的开头部分,默认情况下head指令显示文件的前10行内容
head -n 5 /etc/profile 查看/etc/profile的前面5行内容
17)tail 用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容
tail -f 文件 实时追踪该文档的所欲更新,工作中经常使用
tail -n 5 /etc/profile 查看/etc/profile的后面5行内容
18)ln 创建源文件的软链接也叫符号链接,类似于windows里的快捷方式
rm -rf myroot 删除软链接,删除时,软链接后面不能加/
19)history 查看已经执行过历史命令,也可以执行历史命令
date "+%Y-%m-%d %H:%M:%s" 显示年月日时分秒
date +%y 显示年份的最后两个数,如:2018,就会显示18
date -s "2018-04-12 12:20:00" 把时间设置成2018年4月12日12点20分
1)find 将从指定目录向下递归的遍历各个子目录,将满足添加的文件或目录显示在终端
-name<查询方法> 按照指定的文件名查找模式查找
-size<文件大小> 按照指定的文件大小查找文件,+n大于 -n小于 n等于
find /home -name hello.txt
find /opt -user nobody 查找/opt目录下,用户名为nobody的文件
find / -size +20M 查找整个Linux系统下大于20M的文件
find /opt *.txt 查找/opt目录下,所有.txt文件
使用locate之前需要调用updatedb命令更新数据库
3)grep和管道符号| grep过滤查找,管道符“|”表示将前一个命令的处理结果输出传递给后面的命令处理
cat hello.txt | grep -n yes 在hello.txt文件中,区分大小写查找"yes"所在行,并显示行号
cat hello.txt | grep -ni yes 在hello.txt文件中,不区分大小写查找"yes"所在行,并显示行号
1)gzip/gunzip gzip只能用于压缩文件,gunzip只能用于解压文件
gzip 文件名 压缩文件,只能将文件压缩为*.gz文件
gzip /home/hello.txt 将/home/路径下的hello.txt压缩成hello.txt.gz文件,压缩后hello.txt文件就不存在了
gunzip /home/hello.txt.gz 将/home/路径下的hello.txt.gz文件解压成hello.txt文件
2)zip/unzip zip用于压缩文件,unzip用于解压文件,这个在项目打包中很有用
zip 选项 XXX.zip 将要压缩的内容 压缩文件和目录的命令
zip -r mypackage.zip /home/ 将/home/路径下的所有文件进行压缩成mypackage.zip文件
unzip -d /opt/tmp/ mypackage.zip 将mypackage.zip解压到/opt/tmp/路径下
3)tar 是打包指令,最后打包的文件是.tar.gz的文件
tar 选项 xxx.tar.gz 打包的内容 打包目录,压缩后的文件格式.tar.gz
tar -zcvf a.tar.gz a1.txt a2.txt 压缩多个文件,将/home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz
tar -zcvf myhome.tar.gz /home/ 将/home 的文件夹压缩成 myhome.tar.gz
tar -zxvf a.tar.gz 将a.tar.gz解压到当前目录
tar -zxvf myhome.tar.gz -C /opt/ 将myhome.tar.gz 解压到 /opt/ 目录下,解压到指定的目录下要事先存在,不然会报错
14. Linux的目录结构:https://blog.csdn.net/m0_38044196/article/details/72844025
|------/bin User Binaries 用户的二进制文件,包含了二进制可执行文件
|------/sbin System Binaries 系统的二进制文件
|------/etc Configuration Files 配置文件,包含所有程序所需的配置文件,也包含了用于启动/停止单个程序的启动和关闭shell脚本
|------/dev Device Files 设备文件,包括终端设备、USB或连接到系统的任何设备
|------/proc Process Information 进程信息,包含系统进程的相关信息
|------/var Variable Files 变量文件,包括系统日志/var/log、包和数据库文件、电子邮件/var/mail、打印队列/var/spool、锁文件/var/lock、启动的临时文件/var/tmp
/-------|------/tmp Temporary Files 临时文件,包含系统和用户创建的临时文件,当系统重启时,这个目录下的文件将被删除
|------/usr User Programs 用户程序,包含二进制文件、库文件、文档和二级程序的源代码,/usr/bin中包含用户程序的二进制文件,/usr/sbin系统管理员的二进制文件
|------/home Home Directories 所有用户用home目录来存储他们的个人档案
|------/boot Boot Loader Files 包含引导加载程序相关的文件,内核的initrd、vmlinux、grub文件位于/boot下
|------/lib System Libraries 系统库,包含支持位于/bin和/sbin下的二进制文件的库文件
|------/opt Optional add-on Apps 可选的附加应用程序,opt代表可选的
|------/mnt Mount Directory 挂载目录,临时安装目录,系统管理员可以挂载文件系统
|------/media Removable Devices 可移动媒体设备,用于挂载可移动设备的临时目录。
|------/srv Service Data 服务数据,包含服务器特定服务相关的数据
15. Linux组相关内容 在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所有组、其他组的概念
1)文件/目录所有者 一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
1.1)查看文件的所有者 当某个用户创建了一个文件后,文件所在的所有人默认为该用户
ls -ahl 查看文件所有者命令,a:all h:humen l:list
创建一个组police,再创建一个用户tom,将tom放进police组,然后用tom创建一个ok.txt文件
使用root创建一个apple.txt,然后将其所有者改为tom
2)文件/目录所在组 当某个用户创建了一个文件后,文件所在的组默认为用户所在的组
ls -ahl 查看文件所有者命令,a:all h:humen l:list(同查看文件的所有者命令)
使用root用户创建文件orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到police组
c. chgrp police orange.txt
3)更改用户所在的组 在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在组。
3.2)usermod -d 目录名 用户名 改变该用户登录的初始目录
创建一个土匪组(bandit),将tom从原来所在的police组,修改到bandit(土匪)组
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
a. 第0位确定文件类型(d(目录), -(普通文件), c(字符设备,如键盘、鼠标), b(块文件,如硬盘), l(软链接))
b. 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。---->user
c. 第4-6位确定所属组(同用户组)拥有该文件的权限。---->group
e. 第7-9位确定其他用户拥有该文件的权限。------>other
w:write写权限,可以修改,但是不代表可以删除该文件,删除一个文件的前提是对该文件所在的目录有写权限,才能删除该文件
w:write写权限,可以修改,目录内创建+删除+重命名目录
10:如果是文件,表示硬链接的数量,一般值为1;如果是目录,代表着目录下的子目录个数(其中有两个目录是隐藏的:. 和 ..)
2)权限管理 chmod 通过chmod指令,可以修改文件或者目录权限
u:所有者,g:所有组,o:其他人,a:所有人(u, g, o的总和)
a. chmod u=rwx,g=rx,o=x 文件目录名 给文件或目录设置权限rwxrx---x
b. chmod o+w 文件目录名 给文件或目录的其他人增加执行权限
c. chmod a-x 文件目录名 给所有的用户都去掉一个执行权限
chmod u=rwx,g=rx,o=rx abc 给abc文件设置所有者读写执行、所属组读执行、其他人读执行的权限
chmod u-x,g+w abc 给abc文件的所有者去除执行权限,增加组写的权限
chmod a+r 给abc文件的所有用户添加读的权限
chmod 755 /home/abc.txt 将/home/abc.txt文件的权限修改成rwxr-xr-x,使用数字的方式实现
3.1)chown newowner file 改变文件的所有者
3.2)chown newowner:newgroup file 改变文件的所有者和所有组
-R 如果是目录,则使其下的所有子文件或目录递归生效
chown tom /home/abc.txt 将/home/abc.txt 文件的所有者改为tom
chown -R tom /home/kkk 将/home/kkk 目录下所有的文档和目录的所有者都修改成tom
4.1)chgrp newgroup file 改变文件的所属组
-R 如果是目录,则使其下的所有子文件或目录递归生效
chgrp bandit abc.txt 把abc.txt文件的所在组修改成bandit(土匪)组
chgrp -R bandit kkk 把kkk目录下所有的文档和目录的所在组都修改成bandit(土匪)组
(3) jack创建了一个文件,自己可以读写,本组人可以读,其他人没有任何权限
(4) jack修改该文件,让其他人可以读,本组人可以读写
c. useradd -g police jack
d. useradd -g police jerry
g. jack: touch jack01.txt
h. jack: chmod 640 jack01.txt
i. jack: chmod g+w,o+r jack01.txt
j. root: usermod -g police xh
ps: 文件夹对应成员的权限为r-x时,用户才能进入该目录
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:1.系统工作:有些重要的工作必须周而复始的执行。如病毒扫描等
2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份
crontab -e 编辑一个定时任务,在保存退出后就开始执行
service crond restart 重启任务调度
如:*/1 * * * * ls -l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行ls -l /etc/ > /tmp/to.txt命令
* 代表任何时间,比如第一个"*"就代表着一小时中每分钟都执行一次的意思。
, 代表着不连续的时间。比如"0 8,12,16 * * * 命令",就代表着在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如"0 5 * * 1-6 命令",代表着周一到周六凌晨5点0分执行命令
*/n 代表着每隔多久执行一次。比如"*/10 * * * * 命令",代表每隔10分钟就执行一次命令
b. 输入:*/1 * * * * ls -l /etc/ >> /tmp/to.txt
d. 在每一分钟都会自动的调用 ls -l /etc/ >> /tmp/to.txt 命令
45 22 * * * 命令 在每天22点45分执行命令
0 17 * * 1 命令 在每周一的17点0分执行命令
0 5 1,15 * * 命令 在每月的1号15号的5点0分执行命令
40 4 * * 1-5 命令 在每周一到周五的4点40分执行命令
*/10 4 * * * 命令 在每天的4点每隔10分钟执行一次命令
0 0 1,15 * 1 命令 在每月1号和15号,每周1的0点0分都会执行一次命令
案例1:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate 文件中
a. 先编写一个文件 /home/mytask1.sh
d. */1 * * * * /home/mytask1.sh
案例2:每隔1分钟,将当前日期和日历都追加到/home/mycal 文件中
a. 先编写一个文件 /home/mytask2.sh
d. */1 * * * * /home/mytask2.sh
案例3:每天凌晨2:00将mysql数据库testdb,备份到文件中 mydb.bak。
a. 先编写一个文件 /home/mytask3.sh
/usr/local/mysql/bin/mysqldump -uroot -proot testdb > /tmp/mydb.bak
d. 0 2 * * * /home/mytask3.sh
1. 支持无限多个主分区(但操作系统可能限制,比如window下最多128个分区)
2. 最大支持18EB的大容量(1EB=1024PB,1PB=1024TB)
2.1)Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
2.2)Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
需求是给我们的Linux系统增加一个新的硬盘,并且挂载到/home/newdisk
a. 虚拟机添加硬盘 通过虚拟机操作添加,然后重启centos系统
在[虚拟机]菜单中,选择[设置],然后在设备列表中添加硬盘,然后一路[下一步],中间只有选择磁盘大小的地方需要修改,直到完成,然后重启系统(才能识别)!
开始分区后输入n,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。
c. 格式化 mkfs -t ext4 /dev/sdb1
d. 挂载 先创建一个目录/home/newdisk,挂载mount /dev/sdb1 /home/newdisk
e. 设置可以自动挂载(永久挂载,当你重启系统,仍然可以挂载到/home/newdisk)
2. 添加一个挂载记录,如:/dev/sdb1 /home/newdisk ext4 default 0 0
ps: 卸载磁盘的命令 umount /home/newdisk
du -ach --max-depth=1 /opt/
ls -l /home | grep "^-" | wc -l
ls -l /home | grep "^d" | wc -l
3)统计/home文件夹下文件的个数,包括子文件夹里的文件
ls -lR /home | grep "^-" | wc -l
ls -lR /home | grep "^d" | wc -l
tree 目录 显示指定目录下的文件及目树形录结构
缺点:Linux启动后悔自动获取IP,缺点是每次自动获取的ip可能不一样,这个不适用于做服务器,因为我们的服务器的ip需要是固定的。
直接修改配置文件来指定IP,并可以连接到外网(程序员推荐),编辑vi /etc/sysconfig/network-scripts/ifcfg-eth0
要求:将ip地址配置成静态的,ip地址为192.168.184.130
2. 重启网络服务 :service network restart
1.1)在Linux中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。
1.2)每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器
1.3)每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
1.4)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,知道关机才结束。
ps命令用来查看目前系统中,有哪些正在执行,以及它们执行的情况。可以不加任何参数。
说明:查看进程使用的指令是 ps,一般来说使用的参数是 ps -aux
USER PID %CPU %MEM VSZ RSZ TTY STAT START TIME COMMAND
STAT:进程的状态 S:休眠 s:是会话的先导进程 N:拥有比普通优先级更低的优先级 R:正在运行 D:短期等待 Z:僵尸进程 T:被跟踪或被停止
COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
要求:以全格式显示当前所有的进程,查看进程的父进程
C:CPU用于计算机执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会越低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
思考:如果我们希望查看sshd进程的父进程号是多少,应该怎样查询?
若是某个进程执行一般需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程,使用kill命令来完成此项任务。
killall 进程名称 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
a. ps -aux | grep sshd 找到对应的进程id
b. kill 4010 kill掉进程id对应的进程
案例2:终止远程登录服务sshd,在适当时候再次重启sshd服务
a. ps -aux | grep sshd 找到对应的进程id
b. kill 3908 kill掉进程id对应的进程
案例3:终止多个gedit编辑器[killall,通过进程名陈来终止进程]
a. ps -aux | grep bash 查到终端对应的进程ID
b. kill -9 4090 强制kill掉进程id对应的进程
PS:安装pstree的指令是:yum install psmisc
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysql,sshd,防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。
service 服务名 start | stop | restart | reload | status
在centos7.0后不再使用service,而是用systemctl
1)查看当前防火墙的状况,关闭防火墙和重启防火墙。
1)关闭或者启用防火墙后,立即生效。[telnet 测试某个端口即可]
2)这种方式知识临时生效,当重启系统后,还是回归以前对服务器的设置。
3)如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令
ls -l /etc/init.d/ 列出系统有哪些服务
1)查看或者修改默认级别:vi /etc/inittab
2)Linux系统有7种运行级别(runlevel):常用的级别是3和5
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
开机->BIOS->/boot->init进程->运行级别->运行级别对应的服务
通过chkconfig命令可以给各个运行级别设置自启动/关闭
a. 查看服务 chkconfig --list | grep xxx
c. chkconfig --level 5 服务名 on/off
PS: 在Centos7.0 开始,换成了systemctl命令,具体操作请找度娘
如:chkconfig --list -> systemctl list-unit-files
chkconfig --level 5 sshd off -> systemctl disable sshd.service
chkconfig --level 5 sshd on -> systemctl enable sshd.service
chkconfig --list | grep sshd -> systemctl list-dependencies sshd
案例1:请显示当前系统所有服务的各个运行级别的运行状态
案例3:将sshd服务在运行级别5下设置为不自动启动,看看有什么效果?
chkconfig --level 5 sshd off
chkconfig --level 5 iptables off
a. chkconfig重新设置服务后自启动或关闭,需要重启机器reboot才能生效
top与ps命令很相似,他们都用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
-d 秒数 指定top命令每隔几秒更新。默认是3秒,在top命令的交互模式当中可以执行的命令。
-p 通过指定监控进程ID来仅仅监控某个进程的状态
案例3:指定系统状态更新的时间(每隔10秒自动更新)
top 20:51:22 up 3:22, 3USERS, load average: 0.35, 0.24, 0.30
(当前时间,系统运行时间,当前登录系统用户数量,负载均衡(三个数加在一起除以3超过0.7时,说明系统有点不稳定了))
Tasks: 204 total, 1 running, 203 sleeping, 0 stopped, 0 zombine
(总任务数量,正在运行的任务数量,挂载的任务数量,停止,僵尸)
Cpu(s): 0.8%us, 0.5%sy, 0.0%ni, 98.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
(用户占用的cpu,系统占用的cpu,,空闲的,)
Mem: 2038376K total, 783520k used, 1254856k free, 29636k buffers
Swap: 2097148k total, 0k used, 2097148k free, 389404k cached
netstat -anp | more 常用指令,查看所有网络服务
是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的介质是否为断、网线是否脱落或网卡故障
一种用于互联网下载包的打包及安装工具,它包含在某些Linux发布版本中。它生成具有.RPM扩展名的文件。
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
查询已安装的rpm列表 rpm -qa | grep xxx
一个rpm保命:firefox-45.0.1-1.el6.centos.x86_64.rpm
适用操作系统:el6.centos.x86_64 表示centos6.x的64位系统
如果是i686、i386表示32位系统,noarch表示通用
rpm -qa | grep XX 如:rpm -qa | grep firefox
rpm -qi 软件包名 查询安装的rpm包软件的信息
rpm -ql 软件包名 查询rpm包的文件安装到哪里去了
rpm -qf 文件全路径名 查询某个文件属于哪个rpm包
rpm -qf /root/install.log
1)如果其他软件包依赖于你要卸载的软件包,卸载时则会产生错误信息。
removing these packages would break dependencies:foo is needed by bar-1.0-1
2)如果我们就是要删除foo这个rpm包,可以增加参数--nodeps,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件的程序可能无法运行
a. 先找到firefox的安装rpm包,需要挂载上我们安装centos的iso文件,然后到/media/下去找rpm包。
b. cp firefox-45.0.1-1.el6.centos.x86_64.rpm /opt/
c. rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm
YUM是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
a. 先查看一下firefox rpm 在yum 服务器上是否存在
yum install firefox 会安装最新版本
如果在Linux下进行JavaEE的开发,我们需要安装如下软件:
eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz
apache-tomcat-7.0.70.tar.gz
a. 先将软件通过xftp5上传到/opt/路径下
c. 配置环境变量的配置文件vim /etc/profile
d. JAVA_HOME=/opt/jdk1.7.0_79
e. PATH=/opt/jdk1.7.0_79/bin:$PATH
编写一个简单的hello.java 输出"hello, world!"
tar -zxvf apach-tomcat-7.0.70.tar.gz
先进入tomcat的bin目录:cd apach-tomcat-7.0.70/bin/
vim /etc/sysconfig/iptables
增加一行:A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
重启防火墙:service iptables restart
在windows或linux下访问http://linuxip:8080
tar -zxvf eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz
b. 启动eclipse,配置jre和server
5)mysql5.6的安装和配置,安装包地址:https://pan.baidu.com/s/1powjyUaS_Sh__ydReComRw
CentOS 6.8 下编译安装MySQL5.6.14
使用下面的命令检查是否安装有MySQL Server
[root@hsp ~]#rpm -qa | grep mysql
mysql-libs-5.1.73-7.el6.x86_64
rpm -e mysql_libs // 普通删除模式
rpm -e --nodeps mysql_libs // 强力删除模式,如果使用上面命令删除时,提示有依赖的其他文件,则用该命令可以对其进行强力删除
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
下载MySQL 5.6.14 [这里我们已经下载好了,看软件文件夹],MySQL 5.6.14的路径:
tar -zxvf mysql-5.6.14.tar.gz
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
chown -R mysql:mysql /usr/local/mysql
初始化配置,进入安装路径(再执行下面的指令),执行初始化配置脚本,创建系统自带的数据库和表
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc/目录下查找,找不到则会搜索"$basedir/my.cnf",在本例中就是/usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!
注意:在CentOS 6.8 版操作系统的最小安装完成后,在/etc/目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
mv /etc/my.cnf /etc/my.cnf.bak
添加服务,拷贝服务脚本到init.d目录,并设置开机启动
cp support-files/mysql.server /etc/init.d/mysql
service mysql start 启动MySQL
mysql>SET PASSWORD = PASSWORD('root');
通过vim /etc/profile,添加环境变量
PS:CentOS 7 MySQL安装,亲测可用:https://www.cnblogs.com/chxuyuan/p/7707392.html
1.1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。
1.2)对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些Shell脚本进行程序或是服务器的维护,比如编写一个定时备份数据库的脚本。
1.3)对于大数据程序员来说,需要编写Shell程序来管理集群。
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
3)Shell编程快速入门---Shell脚本的执行方式
创建一个Shell脚本,输出hello world
1. 编写一个shell文件:vim myShell.sh
1)首先要赋予helloworld.sh 脚本的+x权限(可执行)
1)Linux Shell中的变量分为:系统变量和用户自定义变量。
2)系统变量:$HOME、$PWD、$SHELL、$USER等等
3)声明静态变量:readonly变量,注意:不能unset
unset B 注销静态变量,会出错,静态变量不能注销
案例4:可把变量提升为全局环境变量,可提供其他shell程序使用
a. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
a. A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
PS:反引号是键盘的左上角,Esc下面的那个键,引文状态下点击即可`
1)export 变量名=变量值 将shell变量输出为环境变量
2)source 配置文件 让修改后的配置信息立即生效
1)在/etc/profile文件中定义TOMCAT_HOME环境变量
b. 在末尾添加 TOMCAT_HOME=/opt/tomcat
3)在另外一个shell程序中使用TOMCAT_HOME
b. 在里面输入 echo "TOMECAT_HOME=$TOMECAT_HOME"
注意:在输出TOMCAT_HOME环境变量前,需要让其生效
当我们执行一个shell脚本时,如果希望获取命令行的参数信息,就可以使用到位置参数变量
比如:./myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息
$n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}
$* 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
案例:编写一个shell脚本positionPara.sh,在脚本中获取到命令行的各个参数信息。
c. 使文件拥有可执行权限 chmod 744 positionPara.sh
d. 执行 ./positionPara.sh 30 60
就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
$? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;否则(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确。
c. 使文件拥有可执行权限 chmod 744 preVar.sh
RESULT3=`expr $TEMP \* 4`
[ condition ] 注意condition前后要有空格
#非空返回true,可使用$?验证(0为true,>1为false)
[ condition ] && echo OK || echo notok 条件满足,执行后面的语句
c. 更改权限,使之有可执行的权限 chmod 744 judge.sh
案例3:/root/shell/aaa.txt目录中的文件是否存在
if [ -e /root/shell/aaa.txt ]
(1) [ condition ],中括号和condition之间必须有空格
案例:请编写一个shell程序,如果输入的参数大于等于60,则输出"及格了",如果小于60,则输出"不及格"
c. 更改权限,使之有可执行的权限 chmod 744 testIf.sh
案例1:当命令行参数是1时,输出"周一",是2时,就输出"周二",其它情况输出"other"
c. 更改权限,使之有可执行的权限 chmod 744 testCase.sh
for i in "$*" // 或用 for i in "$@" 也可以,只不过$*是输出一行,而$@是每个参数输出一行
c. 更改权限,使之有可执行的权限 chmod 744 testFor.sh
案例1:从1加到100的值输出显示[这里可以看出$*和$@的区别]
c. 更改权限,使之有可执行的权限 chmod 744 testFor2.sh
案例1:从命令行输入一个数n,统计从1+..+n的值是多少?
c. 更改权限,使之有可执行的权限 chmod 744 testWhile.sh
-t 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了
read -p "请输入一个数num1=" NUM1
c. 更改权限,使之有可执行的权限 chmod 744 testRead.sh
案例2:读取控制台输入一个num值,在10秒内输入
read -t -p "请输入一个数num2=" NUM2
c. 执行 ./testRead.sh 不输入内容,等待10秒
shell编程和其他编程语言一样,有系统函数,也可以自定义函数。系统函数中,我们这里只学习两个。
basename [pathname] [suffix]
basename [string] [suffix] basename命令会删掉所有的前缀包括最后一个('/')字符,然后将字符串显示出来。
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
案例1:请返回/home/aaa/test.txt的"test.txt"部分
a. basename /home/aaa/test.txt
c. basename /home/aaa/test.txt .txt
功能:返回完整路径最后/的前面的部分,常用于返回路径部分
dirname 文件绝对路径 从给定的包含绝对路径的文件名中取出文件名(非目录的部分),然后返回剩下的路径(目录的部分)
案例1:请返回 /home/aaa/test.txt 的/home/aaa
a. dirname /home/aaa/test.txt
c. 更改权限,使之有可执行的权限 chmod 744 testFun.sh
1)每天凌晨2:10分备份数据库atguiguDB到/data/backup/db
3)备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如2018-03-12_230210.tar.gz
4)在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除。
a. vim mysql_db_backup.sh
DATETIME=${date +%Y-%m-%d_%H%M%S}
echo "-------------begin-------------"
echo "-----------开始备份------------"
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
mysqldump -u${DB_USER} -p${DB_PWD} --host=${HOST} $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
tar -zcvf $DATETIME.tar.gz $DATETIME
rm -rf $BACKUP/$DATETIME 也可以直接使用 rm -rf $DATETIME
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "----------备份结束-----------"
c. 更改权限,使之有可执行的权限 chmod 744 mysql_db_backup.sh
10 2 * * * /usr/sbin/mysql_db_backup.sh
Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(Canonical Ltd)打造的。
专业的Python开发者一般会选择Ubuntu这款Linux系统作为生产平台。
Ubuntu和Centos都是基于GNU/Linux内核的,因此基本使用和Centos是几乎一样的,他们的各种指令可以通用,只是界面和预安装的软件有所差异
Ubuntu下载地址:http://cn.ubuntu.com/download/
3)Ubuntu的root用户,给root用户设置密码并使用
a. 输入 sudo passwd 命令,输入一般用户密码并设定root用户密码
b. 设定 root 密码成功后,输入 su 命令,并输入刚才设定的root密码,就可以切换成root了。提示符$代表一般用户,提示符#代表root用户。
c. 输入exit命令,退出root并返回一般用户
安装好Ubuntu后,默认就已经安装好Python的开发环境[Python2.7 和 Python3.5]。
a. vim hello.py 编写hello.py
提示:如果Ubuntu上没有vim,我们可以根据提示信息安装一个vim apt install vim
c. python3 hello.py 运行hello.py
apt是Advanced Packaging Tool的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令可用于软件包的安装、删除、清理等,类似于Windows中的软件管理工具。
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache search package 搜索软件包
sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package --reinstall 重新安装
sudo apt-get -f install 修复安装
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-cache depends package 了解使用该包依赖哪些包
sudo apt-cache rdepends package 查看该包被哪些包依赖
sudo apt-get source package 下载该包的源代码
https://mirrors.tuna.tsinghua.edu.cn/
所谓的镜像源:可以理解为提供下载软件的地方,比如Android手机上可以下载软件的安卓市场;ios手机上可以下载软件的AppStore
案例说明:使用apt完成安装和卸载vim软件,并查询vim软件的信息
SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group) 所制定;SSH为建立在应用层和传输层基础上的安全协议。
SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。几乎所有Unix平台--包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
使用SSH服务,需要安装相应的服务器和客户端。客户端和服务器的关系:如果,A机器想被B机器远程控制,那么,A机器需要安装SSH服务器,B机器需要安装SSH客户端。
和CentOS不一样,Ubuntu默认没有安装SSHD服务,因此,我们不能进行远程登录。
sudo apt-get install openssh-server
执行上面的指令后,在当前这台Linux上就安装了SSH服务端和客户端
执行上面的指令,就启动了sshd服务。会监听端口22
2)在Windows上使用xshell5或xftp5登录Ubuntu
3)从Linux系统客户机远程登录Linux系统服务机
首先,我们需要在Linux的系统客户机也要安装openssh-server
例如: ssh atguigu@192.168.188.130
使用ssh访问,如访问出现错误。可查看是否有该文件 ~/.ssh/known_ssh 尝试删除该文件解决。
喜欢就坚持,不喜欢更要坚持,只要方向对了,结局就不会错。