Linux3
35.nmap
扫描指定服务器上所开启的tcp端口。
34.for
格式1:
格式2:
例子:
y=的那行是判断num是否是数字:sed是对以数字开头和以数字结尾的数字扔掉
34.while
说明:计算1+2。。。。+100
34.until
循环条件成立,则终止循环。与while相反
34.服务管理
说明:xinetd服务本身是独立的,即总是在内存中。而基于xinetd的服务不用在内存,需要它们时,得以xinetd服务作为中介,它就像代理一样。
chkconfig
说明:这些都是rpm安装的服务,这个命令是查看自启动的(进入某一级别时要不要自动启动)。以第一个为例,当系统处于0级别时(关机),abrt-ccpp服务关闭。1:单用户,2:不完全多用户,3:字符界面,4:未分配,5:图形界面,6:重启动
ps aux:查看系统中,所有已经运行的进程。
查看当前服务是否运行:
ps aux | grep 服务名
netstat -tlun:不过这个需要服务使用到端口号才行。
rpm服务与源码包服务的区别:
rpm包安装服务的主要位置:
服务启动:
说明:下面的命令是上面的命令的简化版
service --status-all:列出所有服务状态
Apache服务的自启动开启的第一种方法:
说明:--level默认级别就是2345,所以可以省略
Apache服务自启动的关闭:
chkconfig httpd off
Apache服务的自启动开启的第二种方法:
修改/etc/rc.d/rc.local文件,也可以修改它的连接文件/etc/rc.local:
说明:该文件会在用户登录前执行一遍。touch在没有文件时会新建,有文件时则更改文件的最后访问时间。 下面一行使得开机能够先启动。
Apache服务的自启动开启的第三种方法:
执行:ntsysv进入自启动配置界面,若想启动,则打*,否则去掉。
34.基于xinetd服务
注意:基于xinetd服务的启动等价于自启动,改了自启动,启动也改了
说明:此处修改Telnet配置文件。不能直接启动Telnet,因为它是基于xinetd的。把disable改为no
说明:Telnet就跟着启动了
34.源码包安装服务
启动:
注意:rpm和源码都可以安装,因为位置不同,但不能同时启动,因为端口冲突
自启动:
利用服务管理命令启动:
利用chkconfig和ntsysv自启动源码的(默认是找不到的):
说明:在刚才的链接文件中继续更改,其中35是级别,86是第86个启动httpd的的。在/etc/rc.d/rc3.d中,可以找到,在运行级别为3(rc3)时,各个文件的运行顺序是多少。注意,两行#都得有。
chkconfig add apache:把apache加入chkconfig管理序列
之后就可以用chkconfig和ntsysv来修改了。
34.进程
一个程序或命令在执行时,可能产生多个进程。
ps:
说明:-a:查看所有前台进程,-x:查看所有后天进程,-u:这个进程由哪个用户产生的,-l:显示更加详细的信息,-e:显示所有进程。
结果:
说明:每行代表一个进程,init进程是其他所有进程的父进程
每列说明:
说明:如果TTY=?,则表示不认识,但其实是由系统内核创建的。
top:
输入top,得到:
说明:
说明:僵尸进程指的是快要结束了但是还没有结束的进程。
说明:第一行就是说用户用了多少CPU。第四行最重要,越高cpu越轻松。
说明:第三行重要,越高越好。
利用交互模式可以看不同的格式,如按下shift+m
进程树:
pstree
查看各个进程的关系
表示httpd进程下产生了8个httpd子进程
pstree -p:显示pid
pstree -u:显示进程所属用户
终止进程:
kill:
kill -l:查看可用进程信号,通过信号操纵进程
说明:第一行就是重启服务并重新调用配置文件,service用的就是这个。
kill -1 123:重启pid=123的进程,若进程是父进程,所有子进程都被杀死
killall:
killall -9 httpd:输入名字就行
pkill:
说明:和killall几乎一样的。
w:先查询已经登陆的用户
pkill -9 -t tty1:把tty1踢出系统
34.工作管理
把进程放到后台:
第一种方法:
后面加&,放到后台还在运行
tar -zcf a.tar.gz /etc &
第二种方法:
在任何命令执行的时候按住ctrl+z,这种方法是放到后台,暂停了。
jobs
查看后台
说明:1表示第一个放入后台,这是工作号,+表示这个进程是最后一个放入后台的,-代表倒数第二个。
fg:
恢复后台工作
bg:
把后台暂停的工作恢复到后台执行
34.vmstat
监听cpu和内存资源
说明:每次间隔1s,监听3次
dmesg:
dmesg | grep etho:也能看网卡
free:
专门看内存的
总共占用1006MB,用了887MB,其中缓冲占了36MB,缓存占用了761MB,Linux真正用了887-36-761MB,空闲119MB
缓冲和缓存的区别:
查看CPU详细信息:
cat /proc/cpuinfo
uptime
uname:
filie:
file /bin/ls : 通过输入一条外部命令(不能是内部命令)来判断当期系统的位数
lsb_release:
lsof:
例如:lsof -p 213:列出 pid=213的进程所打开的文件;lsof -c init:按字符串来查找。
34.定时
先把crond服务启动和自启动
crontab:
说明:如果写的是*,代表任意时间,第一个是每天的那个点执行。如果第二个例子的第一个是*,则是在17点时,每分钟执行一次。10 * * * * 命令:表示每小时第10分钟执行。
注意:用crontab时,%会对crontab有特殊的含义。所以脚本里面有用到%的都要在前面加上\:
crontab -r:删除所有定时任务
34.日志
通常的日志服务:rsyslogd
此服务是否启动?
日志作用:
若安装了rpm服务,则对应日志:
日志格式:
举例:
说明:第一条日志:在。。。时间,由本机(localhost)的sshd服务,产生了一条日志信息:root密码成功输入;第二条日志:由pam模块验证了用户的登录。
一些服务:
说明:需要什么日志,就把对应的服务写到/etc/rsyslog.conf配置文件
日志等级
说明:从上到下,等级递增,记录的信息递减,处理优先级递增。
日志记录位置:
说明:第一行指的是可以将日志保存到一个文件中去;第二行指的是将日志信息传给设备文件直接显示到屏幕。第四行指发给用户 。
说明:在/etc/rsyslog.conf文件中的这句话表示:*.info:只要等级比info高的日志信息都输出到/var/log/messages中,后面的.none表示不要这些日志了,不用管。
34.日志轮替
指的是将大日志分成小日志或者把旧的日志扔掉。
第一种日志命名:
第二种命名:
说明:生成第一个日志文件时,命名:s0;生成第二个日志文件时:s0,s1,注意此时之前那个s0改名为s1,而新的日志文件名为s0。
/etc/logrotate.conf配置文件的参数说明:
说明:0600的第一个0指的是suid权限。如果就一个create,则按他默认的来。
例如在/etc/logrotate.conf中:
说明:{}里面有monthly,就高于外面的weekly 。4表示保留4个日志。
把源码包安装的Apache加入轮替(rpm的默认已经有轮替,因为日志所在的目录是会搜到的,不需要手工轮替,而源码的日志位置找不到,所以需要在配置文件中进行轮替管理),因为定时任务会定时读取这些配置文件,日志就会依次轮替:
logrotate命令:
说明:-v可以看下日志是否具备轮替条件。
logrotate -f /etc/logrotate.conf:全部规定的日志强制轮替
34.启动
init 运行级别:改变运行级别,切换运行级别,总共0-6运行级别
init 0:只关机,不保存
修改默认级别:
启动过程:
说明:BIOS开机自检,加载MBR(主引导记录),主引导记录中保存有启动引导程序(对Linux而言,是grub)。若下载了多个操作系统,则进入下面一栏。不直接到硬盘加载驱动,而是先找到initramfs(/boot/下),在加载驱动
有了驱动就能读取硬盘了。
查看initramfs:
34.grub
配置文件内容:
解释:
说明:当有多个操作系统时,默认启动第一个操作系统。隐藏菜单:当倒计时5s时,除非用户按了上下键,否则不显示菜单。
说明:第二行指的是启动的主目录都保存在第一块硬盘的第一个分区 。第三行就是在加载内核,第四行就是加载initramfs
34.备份
完全备份:完完全全备份一份
增量备份:第二次备份时只备份增加的数据,最后恢复麻烦
差异备份:
34.dump
说明:不用-level,直接-数字
先安装dump:yum -y install dump
备份分区:
说明:0就是0级别的备份,1就是1级别的备份。上面的过程是:在install.log复制过去之前进行完全备份,复制过去之后进行增量备份。这里cat是查看dump是在什么时候执行的。
说明:这是查询整个分区的备份情况。/boot分区最后是1级别备份,它是在Wed。。。进行的
dump对分区才能进行增量备份,不能对文件进行:
34.restore
说明: 利用restore比较文件是否发生变化,/root/boot.bak.bz2是之前对boot分区的完全备份。
然后再改回来,重新restore比较。
说明:能够查看boot.bak.bz2拥有哪些数据
还原分区:
说明:这里要把0级别的完全备份和1级别的增量备份都恢复,才能实现分区恢复,得利用备份才能恢复。这里在自己建立的目录里面,所以也恢复到这里
34.source或.或bash或者#!
vi新建一个a.txt,里面写:echo "asd"
source a.txt就能执行了,或者. a.txt
bash a.txt : 先开启一个bash进程,此时当前进程id更换(可以用echo $$查看),随后读入a.txt
还有一种方法,在a.txt里面的开头一行写上:#!/bin/bash
随后chmod +x a.txt将普通文件变成程序
最后直接./a.txt就能执行了,此时也是又开辟一个新bash进程,然后让它读取文件去执行。
35.函数
先定义后使用:
vi 一个脚本里面写入:
#!/bin/bash #先声明用什么shell解释器,如果不写则默认bash
调用脚本传入参数。
调试两种方法(每行都会执行并用+打印该行的执行结果):
说明:参数最好用{}起来
想在外部调用其他脚本的函数的话用:source 其他脚本:
source 脚本或者. 脚本:使得该脚本的运行能够在调用source命令的相同空间中进行,因此可以不用管作用域了,能够互相调用了
36.bash7步扩展
37.netstat 查看建立了什么连接
netstat -nap : n:以ip地址显示,不进行ip地址与逻辑名称的转换,a:所有,p:进程
38.router -n
查看路由表
39.arp -a:
打印arp表
cd -P 链接文件:如果是个目录,则是正常的cd,如果是个链接文件,则cd到文件的链接处