管理
在UNIX/linux系统中,一切皆为文件;若非文件,则为进程。首先认识文件系统:
linux文件系统
/var - 经常变化的(variable)文件,诸如日志或数据库等
/usr - 包含绝大部分所有用户(users)都能访问的应用程序和文件
/opt - 提供一个供可选的 (optional) 应用程序安装目录
/tmp - 临时(temporary)文件
/etc - 配置文件、启动脚本等 (etc)
/dev - 设备 (device) 文件
/bin - 重要的二进制 (binary) 应用程序
/boot - 启动 (boot) 配置文件
/sbin - 重要的系统二进制 (system binaries) 文件
/sys - 系统 (system) 文件
/home - 本地用户主 (home) 目录
/lib - 系统库 (libraries) 文件
ls
(http://www.jb51.net/article/56474.htm)
ls命令的20个实用范例
通过修改时间列出:ls -lt
排序文件大小:ls -lhs
测量大小: ls -l --block-size=M
显示隐藏文件 ls -a
只列出目录条目 ls -d */
增加 / (斜线) 标记目录: ls -p
排序时反转顺序: ls -r
递归列出子目录: ls -R
扩展名排序: ls -lX
统计某文件夹下文件的个数:ls -l |grep "^-"|wc -l
统计某文件夹下目录的个数:ls -l |grep "^d"|wc -l
统计当前文件夹下文件的个数,包括子文件夹里的 ls -lR|grep "^-"|wc -l
程序安装
yum
rpm
卸载已经安装的rpm包
两个关键点:
1.如果提示有xxx.rpm包已经被installed了,那么先用rpm -e --nodeps xxx来卸载
2.如果存在多个版本的话,用rpm -e --allmatches来卸载
linux 下如何安装 tar.gz包
1)解压tar.gz包
==》最常见的gz格式,则可以执行:“tar –xvzf 软件包名”,就可以一步完成解压与解包工作。
tar -zxvf 软件包名.tar.gz -C /home/hao 将软件包名.tar.gz解压到指定的目录下 (注意:-C为大写)
2)进入解压后的文件目录下 执行“./configure”命令为编译做好准备;
./configure --prefix=/opt
表示安装到/opt目录
3) 执行“make”命令进行软件编译;
4) 执行“make install”完成安装;
5) 执行“make clean”删除安装时产生的临时文件。
文件解压
tar
tar -zxvf 软件包名.tar.gz -C /home/hao 将软件包名.tar.gz解压到指定的目录下 (注意:-C为大写)
unzip
文件操作
cp
mv
scp
快速删除大量文件:
1)先建立一个空目录
mkdir /data/blank
2)用rsync删除目标目录
rsync --delete-before -d /data/blank/ /var/spool/clientmqueue/
ln -s 源文件 目的文件(链接文件)
ln -s log2013.log link2013
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
ln -s /usr/local/nginx/conf /etc/nginx
1.源文件被删除后,并没有影响硬链接文件;软链接文件在centos系统下不断的闪烁,提示源文件已经不存在
2.重建源文件后,软链接不在闪烁提示,说明已经链接成功,找到了链接文件系统;重建后,硬链接文件并没有受到源文件影响,硬链接文件的内容还是保留了删除前源文件的内容,说明硬链接已经失效
权限
https://www.cnblogs.com/0xcafedaddy/p/7132860.html
- 常用的linux文件权限:
444 -r--r--r--
600 -rw-------
644 -rw-r--r--
666 -rw-rw-rw-
700 -rwx------
744 -rwxr--r--
755 -rwxr-xr-x
777 -rwxrwxrwx
注:使用ll命令查看文件/文件夹属性时候,一共有10列,第一个小格表示是文件夹或者连接等等
d表示文件夹,l表示连接文件,-表示文件
- 用户分组权限概念
从左至右:
0位数字代表文件类型:d表示文件夹,l表示连接文件,-表示文件
1-3位数字代表文件所有者的权限
4-6位数字代表同组用户的权限
7-9数字代表其他用户的权限
3.数字概念解析
读(r)=4
写(w)=2
执行(x)=1
读+写+执行=4+2+1=7
通过4、2、1的组合,得到以下几种权限:
0(没有权限)
4(读取权限)
5(4+1 | 读取+执行)
6(4+2 | 读取+写入)
7(4+2+1 | 读取+写入+执行)
chmod 777 目录
chmod -R 777 usr/
Linux centos关机与重启命令详解与实战
Linux centos重启命令:
● 1、reboot
● 2、shutdown -r now 立刻重启(root用户使用)
● 3、shutdown -r 10 过10分钟自动重启(root用户使用)
● 4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)
如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启
Linux centos关机命令:
● 1、halt 立刻关机
● 2、poweroff 立刻关机
● 3、shutdown -h now 立刻关机(root用户使用)
● 4、shutdown -h 10 10分钟后自动关机
如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启
查找
● find
○ find . -name “*” | xargs grep “hello abcserver”
○ find . -name "*" | xargs grep "test"
● locate(locate)
用来查找文件或目录。 locate命令要比find -name快得多,原因在于它不搜索具体目录,
而是搜索一个数据库/var/lib/mlocate/mlocate.db 。这个数据库中含有本地所有文件信息。
Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate
查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是
因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
locate /etc/my
查看资源
系统版本
cat /etc/redhat-release
硬盘资源
du-Disk Usage
df-Disk Free
du -ah --max-depth=1 /ddhome/usr/hadoop du -h du -lh
df -h df -TH
ll -lh
fdisk -l
查看CPU信息
总核数 = 物理CPU个数 X 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
#查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
#查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
#查看逻辑CPU的个数
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
调试
set -x 查看shell调试信息
网络
查看生效的ip信息
ifconfig
关闭和启动网卡
ifdown lo
ifup lo
netstat
-t 列出tcp协议端口
-u 列出udp协议端口
-n 不使用域名与服务名,使用IP和端口
-l 列出监听状态的网络服务
-a 列出所有的网络连接
-r 路由信息
-p 列出pid,进程id
netstat -anp|grep :22
netstat -tunl
netstat -rn
netstat -an|grep ESTABLISHED #通过这条指令查看当前计算机开启了哪些服务。
netstat -an|grep ESTABLISHED |wc -l #查看正在连接我的计算机
抓包命令
tcpdump \'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)\' -w 80.cap
tcpflow -a -o . -Fk -r 80.cap
开机自启动
/etc/rc.d/
init.d/ :各种服务器和程序的二进制文件存放目录
rc.* 各个启动级别的执行程序连接目录。里头的东西都是指向init.d/的一些软连接
服务开机自启动
/etc/rc.d/rc*.d
chkconfig --add service
chkconfig -level 5 service on
脚本开机自启动
etc/rc.d/rc.local
直接在该文件末尾添加自定义脚本
启动日志
/var/log/boot.log
进程查看ps
ps命名可以确定哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到。ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。
参数:
-A :所有的进程均显示出来,与 -e 具有同样的效用;
-a : 显示现行终端机下的所有进程,包括其他用户的进程;
-u :以用户为主的进程状态 ;
x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
l :较长、较详细的将该PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。
相关信息的意义为:
F 代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
S 代表这个程序的状态 (STAT);
UID 代表执行者身份
PID 进程的ID号!
PPID 父进程的ID;
C CPU使用的资源百分比
PRI指进程的执行优先权(Priority的简写),其值越小越早被执行;
NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。
ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行 的程序,一般就是『 - 』
SZ 使用掉的内存大小;
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
TTY 登入者的终端机位置;
TIME 使用掉的 CPU 时间。
CMD 所下达的指令名称
使用 -a 参数。-a 代表 all。同时加上x参数会显示没有控制终端的进程。
$ ps -ax
在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户\'pungki\'的进程,可以通过下面的命令:
$ ps -u pungki
通过cpu和内存使用来过滤进程
也许你希望把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 aux 参数,来显示全面的信息:
$ ps -aux | less
根据 CPU 使用来升序排序
$ ps -aux --sort -pcpu | less
根据 内存使用 来升序排序
$ ps -aux --sort -pmem | less
显示前10个结果:
$ ps -aux --sort -pcpu,+pmem | head -n 10
通过进程名和PID过滤
使用 -C 参数,后面跟你要找的进程的名字。比如想显示一个名为getty的进程的信息,就可以使用下面的命令:
$ ps -C getty
$ ps -f -C getty
根据线程来过滤进程
如果我们想知道特定进程的线程,可以使用-L 参数,后面加上特定的PID。
$ ps -L 1213
显示安全信息
如果想要查看现在有谁登入了你的服务器。可以使用ps命令加上相关参数:
$ ps -eo pid,user,args
格式化输出root用户(真实的或有效的UID)创建的进程
系统管理员想要查看由root用户运行的进程和这个进程的其他相关信息时,可以通过下面的命令:
$ ps -U root -u root u
使用PS实时监控进程状态
ps 命令会显示你系统当前的进程状态,但是这个结果是静态的。
当有一种情况,我们需要像上面第四点中提到的通过CPU和内存的使用率来筛选进程,并且我们希望结果能够每秒刷新一次。为此,我们可以将ps命令和watch命令结合起来。
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’
如果输出太长,我们也可以限制它,比如前20条,我们可以使用head命令来做到。
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’
查看系统打开文件lsof
lsof(list open files)是一个列出当前系统打开文件的工具。
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。
因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
lsof输出各列信息的意义如下:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
参考文献
tips:本文属于自己学习和实践过程的记录,很多图和文字都粘贴自网上文章,没有注明引用请包涵!如有任何问题请留言或邮件通知,我会及时回复。