命令:pwd
- 查看当前目录
命令:cd
- 定位当前目录为weblogic目录下
cd /home/weblogic
-将目录返回至上一级
cd ..
--将目录返回至上二级
cd ../..
用户相关
- 用户列表文件:/etc/passwd
- 用户组列表文件:/etc/group
- 查看系统中有哪些用户:cut -d : -f 1 /etc/passwd
- 查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f
- 查看用户操作:w命令(需要root权限)
- 查看某一用户:w 用户名
- 查看登录用户:who
- 查看用户登录历史记录:last
命令:man
- 功能:man 对你熟悉或不熟悉的命令提供帮助解释
- 格式:
man [命令]
# eg:
man ls
#就可以查看ls相关的用法
注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。
命令:ls
- ls 查看目录或者文件的属*,列举出任一目录下面的文件
eg: ls /usr/man
- 命令:
ls -l
相当于ll
命令:cp
- 功能:用于拷贝文件
格式:CP [选项] 源文件或目录 目的文件或目录
- 选项说明:
-
-b
同名,备分原来的文件 -
-f
强制覆盖同名文件 -
-r
按递归方式保留原目录结构复制文件
#eg:
cp -r /tmp/a /root/a
# 记得有空格
cp filename1 filename2
# 把filename1拷贝成filename2
cp 1.c netseek/2.c
# 将1.c拷到netseek目录下命名为2.c
命令:mv
- 功能:移动文件或者文件夹
- 格式:
mv [选项] 源文件或目录 目标文件或目录
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
# eg:
mv -f 1.txt /home/path/
命令:rm
- 功能: rm 删除文件和目录
- 格式:
rm [选项] path to <文件>
-d --directory 删除可能仍有数据的目录 (只限超级用户)
-f --force 略过不存在的文件,不显示任何信息
-i --interactive 进行任何删除操作前必须先确认
-r/R --recursive 同时删除该目录下的所有目录层
-v --verbose 详细显示进行的步骤
--help 显示此帮助信息并离开
--version 显示版本信息并离开
# eg:
rm 1.c //将1.c这个文件删除
#删除所有rb语言程序档;删除前逐一询问确认 :
rm -i *.rb
#将 Finished 子目录及子目录中所有档案删除 :
rm -r Finished
#将 Finished 子目录及子目录中所有档案删除,并且不用一一确认 :
rm -rf Finished
命令:cd
- 功能:改变当前目录
命令:pwd
- 功能:查看当前所在目录完整路径
eg: pwd //查看当前所在目录路径
cd netseek //进入netseek这个目录
cd //退出当前目录
命令:cat
- 功能:将某个文件的内容全部显示出来。
- 格式:
cat [filename]
cat>1.c //就可以把代码粘帖到1.c文件里。
命令:more
- 功能:将文件一部分打印出来,知道填满当前屏幕,按
j
继续显示,q
退出
命令:chmod
- 功能:修改文件夹、文件权限
- 格式:点击查看
命令:touch
- 功能:一般用作新建文件
- 格式:
touch [文件名]
touch test.txt
命令:clear
- 功能:清空当前屏幕
命令:date
- 功能:显示系统时间
命令:su
- 功能: 在不退出登陆的情况下,切换到另外一个人的身份,需要输入身份密码
- 格式:
su [用户名]
其中su - [用户名]
是完全切换为用户环境
su root
用法: su -l 用户名(如果用户名缺省,则切换到root状态)
eg:su -l netseek (切换到netseek这个用户,将提示输入密码)
命令:whoami
,whereis
,which
,id
- 功能:
//whoami:确认自己身份
//whereis:查询命令所在目录以及帮助文档所在目录
//which:查询该命令所在目录(类似whereis)
//id:打印出自己的UID以及GID。(UID:用户身份唯一标识。GID:用户组身份唯一标识。每一个用户只能有一个唯一的UID和 GID)
eg: whoami //显示你自已登陆的用户名
whereis bin 显示bin所在的目录,将显示为:/usr/local/bin
which bin
命令:grep,find
- grep:文本内容搜索;find:文件或者目录名以及权限属主等匹配搜索
eg: grep success * /*查找当前目录下面所有文件里面含有success字符的文件
命令:kill
- 可以杀死某个正在进行或者已经是dest状态的进程
eg; ps ax
命令:history
- 用户用过的命令
eg: history //可以显示用户过去使用的命令
命令: !!
- 执行最近一次的命令
命令:mkdir
eg: mkdir netseek //创建netseek这个目录
命令:tar
- 解压命令
eg: tar -zxvf nmap-3.45.tgz //将这个解压到nmap-3.45这个目录里
命令:vi 或者 vim
- 编辑文件
- 教程
vi filename.txt(文件)
esc :wq --保存退出
esc :q! --不保存退出
命令:df
查看服务器磁盘空间使用情况
df -hl
估算目录dir已经使用的磁盘空间
du -sh dir
查看当前正在运行的程序进程
ps -ef|grep java/weblogic/tomcat(程序名称)
查看该进程号所属目录
pwdx 1158(进程号)
强制杀死该进程
kill -9 1158(进程号)
将文件夹打成压缩包
tar -zcvf /root/filename_$(date +%Y-%m-%d).tar.gz /home/weblogic/files
解压压缩包到当前目录
tar -zxvf filename.tar.gz
查看当前目录下的nohup.out动态输出(如查看weblogic后台日志)
tail -f nohup.out
将系统日期修改为:2011年5月27日(需要用root用户修改,其它用户默认只能查看日期,没修改权限)
date -s 05/27/2011
将系统时间修改为:10点24(需要用root用户修改,其它用户默认只能查看日期,没修改权限)
date -s 10:24:00
将系统时间修改为:2月5日9点30(年份保持修改前的年份)
date 02050930
查看系统CPU运行情况
top
查看服务器内存使用情况
free -g
查看端口占用情况
netstat -anp
给文件所有(a)用户分配所有权限
chmod a+x filename(文件或者文件夹)
把home目录下的weblogic目录的拥有者改为weblogic用户
chown weblogic /home/weblogic
把home目录下的weblogic目录的所属组改为weblogic组
chgrp weblogic /home/weblogic
两个linux互传输文件
scp /root/test/filename.zip[[email protected]:/home/weblogic/test/](mailto:[email protected]:/home/weblogic/test/)
- 重启服务器(用root用户登录)
reboot - 检测端口是否开放(在windows cmd中执行)
telnet 192.168.1.128 1521 - 添加定时任务命令(-l是查看)
crontab -e
- 添加定时任务(每天晚上11执行)
00 23 * * * /root/backup_nohup.sh
- pkill:踢出已经登录的用户
- Usage:pkill -kill -t [ttyname]
notes:一般地,先使用“who”查看在线用户有哪些,紧接着使用“who am i”确认自己的身份,最后使用“pkill”踢出用户;
关于日志分析:
dmesg:输出内核环缓冲区内容;其中的内容存放在日志文件“/var/log/dmesg”中;保存了内核初始化硬件、模块的信息;内核将各种消息存放在此;
-c:显示完Ring Buffer中的内容后,清空Ring Buffer;
-r:显示原生的消息,不要去掉日志级别;
-s:指定Ring Buffer的大小,默认值根据内核版本而不同;
-n:指定显示到Console的日志的级别,共有8种,在“kernel.h”中做了宏对应;
Usage:dmesg [-c] [-r] [-n level] [-s bufsize]
notes:一般地,我们是直接使用“dmesg”命令,不加参数,之后使用“grep”进行筛选;常用来诊断某个服务配置错误,某个硬件工作不正常等问题;当然,开机过程中的信息也在里面包含着;
/var/log/secure:只要牵涉到“需要输入账号口令”的软件,登录时(不管登录成功与否)的信息都会记录在此;包括系统的login、gdm、su、sudo、ssh、telnet等;
/var/log/mesages:几乎系统发生的错误信息(或者是重要的资讯)都会记录在此;如果系统发生莫名其妙的错误时,这个文件时一定要查阅的日志文件之一;
Troubleshooting流程:
根据经验处理:一些常见问题的处理,要么在头脑里知道处理方法;要么有个印象,去查询以往的笔记;
阅读提示信息:发现一个问题时,最有效的分析入手点是阅读屏幕上的提示信息,根据提示信息分析问题产生的可能原因;
查阅日志:当屏幕上的信息不够充足的时候,可以关注日志信息,使用“tail”确定出发生问题时以及之后的日志;日志的格式一般是一条条记录,里面包含了“发生时间、日志级别、产生程序、简要说明”,据此,可以使用grep结合时间、产生程序的名字进行筛选;
上网搜寻:以日志中的“简要说明”为关键字进行搜索,找到相应处理方法后,记录到笔记中;
寻求身边的人:网上也找不到时,可以询问这一方面的专家,并做好记录;
寻求开发团队:一些时候,当对系统一点都不熟悉时,产生了问题可以直接联系开发团队;在邮件中描述清楚“需求,操作过程,产生的问题”;
官方手册:最权威的系统说明书;对于一些软件来说,是个最好的选择;
README和DOC:安装前、安装后都可以查询软件自带的README和DOC套件;尤其是README中经常包含一些URL,可以访问这些URL以获取更多的信息;
关于/proc目录分析:
/proc目录:内核提供的一个虚拟文件系统,位于内存中,保存着系统运行时的很多参数;用来进行内核(内核模块)和进程的沟通;在系统运行时,可以通过这个接入点向内核传递参数,改变内核的一些设置,人为干涉内核的运作;
加载proc文件系统:mount -t proc proc /proc;
编辑器处理:虽然是虚拟文件系统,但是,可以使用编辑器例如”cat、nl、vi“等对其中的文件进行编辑,进行编辑时,这些文件才会被”凭空“地创建出来;这也是为什么使用”ls -l“看到此目录下存在许多文件大小为0的文件的原因;
目录结构:包含有文件和目录
/proc/cpuinfo:包含有CPU的信息
/proc/meminfo:系统运行时内存信息
/proc/mounts:显示已经挂载的文件系统的信息
/proc/devices:显示系统中可以使用的设备
/proc/filesystems:显示系统所支持的文件系统类型
/proc/diskstats:系统磁盘的相关信息
/proc/modules:显示出系统已经加载的内核模块
/proc/version:显示系统版本信息
/proc/cmdline:显示系统启动时追加给系统的命令行参数
/proc/sys/:与内核交流的接入点
/proc/net/:网卡设备信息
/proc/fs/:文件系统信息
/proc/driver/:设备驱动信息
/proc/bus/:系统总线信息
/proc/irq/:系统中断资源信息
/proc/ipmi/:ipmi设备信息
/proc/scsi/:SCSI设备信息
数字目录:系统运行中的每一个进程的pid编号,目录内包含了关于对应进程的一些非常有用的信息,如进程使用的工作目录等;
查看系统资源占用:
lsof:列出系统当前打开的资源;Linux系统中一切均为文件,故而全是文件之间的交互,使用lsof可以观察某个进程使用的文件有哪些;
-c:列出具有指定名称的进程所打开的系统资源,如,“-c init”;
-p:列出具有指定进程号的进程锁打开的系统资源,如,“-p 1”;
+d:显示某个目录下被进程打开的文件,如,“+d /usr/bin/”;
+D:级联显示某个目录下被进程打开的文件,如,“+D /usr/bin/”;
-d:显示使用着指定fd的进程,如,“-d 4”;
-i:用以显示符合条件的的进程的情况,如,“-i :80”;
notes:一般地,当我们在使用“umount”卸载文件系统时,系统提示busy,那么,极有可能是文件系统被某些进程在使用着,这时,可以使用“lsof +D /media/”等命令查看占用进程,待关闭那些进程后,然后继续卸载工作;另外,对于一些日志文件,一不小心删除了的话,可以及时通过lsof查阅后进行恢复,这个原理是利用内存中的fd信息进行重定向;
COMMAND:表示进程的名字;
PID:对应进程的进程号;
USER:进程的所有者;
FD:文件描述符,APP通过FD来识别文件,和文件打交道;cwdAPP启动的目录,当前工作的目录,除非APP对其进行更改,txt程序代码,数值后的W~写锁;
TYPE:REG文件,DIR目录;CHR字符设备,BLK块设备;UNIX套接字,FIFO先进先出队列,IPv4~网际协议;
DEVICE:指定磁盘的名称;
SIZE:文件大小;
NODE:索引节点,也就是文件在磁盘上的标识;
NAME:文件的具体名称;
strace:用户态的进程不能直接访问系统硬件,必须先由用户态转为内核态,然后进行系统调用,最后才能访问系统硬件资源;而这个strace则可以追踪这种来自于用户态进程在使用系统硬件时的系统调用,并且包含有参数,返回值,执行消耗的时间等;
Usage:strace [-dDffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file] [-p pid] ... [-s strsize] [-u username] [-E var=val] [command [arg ...]]-
notes:一般地,可以使用它来观察程序工作时都处理了哪些文件,这个功能最为常用;
p:后接进程号,跟踪具有指定进程号的进程的系统调用;
-c:统计出每一系统调用的执行时间、次数、出错的次数等;
-d:输出strace关于标准错误的调试信息;
-f:跟踪由fork调用所产生的子进程;
-ff:如果提供”-o filename“,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号;
-F:尝试跟踪vfork调用,在-f时,vfork调用不被跟踪;
-i:输出系统调用的入口指针;
-q:禁止输出关于脱离的消息;
-r:打印出关于每一个系统调用的相对时间;
-t:在输出中的每一行前加上时间信息;
-tt:同上,只不过是微秒级时间;
-T:显示每一调用所耗的时间;
-v:输出所有的系统调用,像一些关于环境变量、状态等调用由于使用频繁,默认不输出;
-X:以十六进制形式输出非标准字符串;
-XX:所有字符串以十六进制形式输出;
-a:设置返回值的输出位置,默认为40,如,”-a 50“;
-e:指定一个表达式,用来控制如何跟踪,如,”-e trace=open,close“;
-e trace=$set,只跟踪指定的系统调用,默认为all;
-e trace=file,只跟踪有关文件操作的系统调用;
-e trace=process,只跟踪有关进程控制的系统调用;
-e trace=network,只跟踪与网络有关的所有系统调用;
-e trace=signal,只跟踪所有与系统信号有关的系统调用;
-e trace=ipc,只跟踪所有与进程通讯有关的系统调用;
-e raw=set,将指定的系统调用参数以十六进制显示;
关于内核:
内核模块:Linux系统的内核镜像是尽可能小的,但是为了扩展功能,内核允许在运行时直接向内核地址空间内插入代码运行,这些代码(数据、函数入口、函数出口等)被组合成一个二进制的镜像,即所谓的的Linux系统模块;这些模块一般被插入,是会实时生效的;内核模块的位置一般均位于”/lib/modules/uname -r
/kernel“目录下,且以*.ko的方式存在;
modinfo:显示指定模块的具体信息
-a:显示模块的开发作者;
-d:显示模块的描述信息;
-l:显示模块的传播授权信息;
-p:显示模块所支持的所有的类型的参数;
-f:后接一个用户自己定义的字符串,可以通过此字符串获取内核中指定模块ELF段中的值,其中,包含模块的信息;
Usage:modinfo [-0][-F field][-k kernelversion][-b basedir] module...
notes:一般地,我们直接使用”modinfo module_name“的格式,并且不加任何关于modinfo的参数,以获取关于模块的所有信息;
lsmod:友好化地显示内核中已经加载的内核模块,读取了”/proc/modules“文件中的信息;
Usage:lsmod
notes:一般地,内核中加载的模块并不是很多, 所以我们直接使用”lsmod“列出所有在内核中已经加载的模块;当然,在写脚本时,一般地,我们是结合grep进行筛选的;
insmod:最简单的一个装载内核模块的工具;
-f:不检查目前kernel版本与编译模块时的kernel版本是否一致,进行强制插入;
-k:将模块设置为自动卸载;
-m:输出模块的装载信息;
-o:指定模块的名称,也可以使用模块文件的文件名,如,”insmod -o ext4.ko“;
-p:测试模块是否能够正确地载入到kernel中;
-s:将所有信息记录在系统记录文件中;
-v:执行时显示详细的信息;
-x:不要汇出模块的外部符号;
-X:汇出模块的所有外部符号,此为预设值;
Usage:insmod [ options ] [ filename ] [ module options... ]
notes:一般地,我们直接使用”insmod ext4.ko“的形式装载模块;但是,insmod不能解决依赖性问题;
rmmod:移除内核中的指定模块;
-f:强制卸载内核模块,这样做可能引起系统崩溃,一般地,不建议使用这个选项;另外,这个选项的支持需要在编译内核时开启”Forced Module Removal“选项;
-v:卸载内核模块时打印出详细信息;
-s:将错误信息输入到syslog服务,而非打印到stderr;
-w:通常,系统不允许移除正在使用的模块,使用参数将会将该模块迅速孤立起来,直到其不再被访问和使用;
Usage: rmmod [-fhswvV] modulename ...
notes:一般地,我们先使用lsmod和grep检索出待卸载的模块,然后直接使用”rmmod modulename“移除模块即可,如果提示正在被使用,则加上f参数 处理即可;
depmod:分析可加载模块的依赖性,生成依赖关系文件”modules.dep“和映射文件;此命令会读取”/lib/modules/”version“/“目录下的所有模块信息,并检查每个模块导出的symbol和需要的symbol,然后据此生成一个依赖关系列表,默认地,该列表写入到”/lib/modules/”version“/modules.dep“中;如果,命令中的filename有指定的话,则会仅检查这些指定的模块(并不常用);如果命令中提供了version参数,则会使用version所指定的目录生成依赖,而不是当前内核的版本(uname -r);
-b:如果你的模块不在”/lib/modules/version“目录下,可以指定目录,然后生成依赖;
-e:和-F选项一起使用,当一个模块需要的symbol在其他模块里面没有提供时,做出报告,正常情况下,模块没有提供的symbol都在内核中有提供;
-F:提供一个System.map文件(在编译内核时生成),允许-e选项报告出”unresolved symbol“;
-n:将结果”modules.dep“和各种映射文件输出到stdout,而不是写到模块目录下;
-a:探测所有模块,这个选项是默认的,如果直接使用”depmod“这种形式;
-A:检查是否有模块比modules.dep中的模块新,若没有,则退出不重新生成文件;
Usage:depmod [-n -e -v -q -r -u -w] [-F kernelsyms] module1.ko module2.ko ...
notes:一般地,我们直接使用”depmod“这种形式即可,先进行依赖关系的处理,然后使用”modprobe“进行加载;
modprobe:加载或者移除内核模块;可以智能地处理依赖性问题;使用”modprobe“时,需要一个最新的”modules.dep“文件,可以用”depmod“生成;模块自动加载啊打发爱的色放啊
-v:输出详细信息;
-C:重载默认配置文件(/etc/modprobe.conf~RHEL6.x之前,或者/etc/modprobe.d/*);
-c:输出配置文件并退出;
-n:可以和-v一起使用,调试时非常有用;
-q:静默模式,一般modprobe装载或者移除一个模块时,若没有找到则会提示错误,使用了该选项后,会忽略指定的模块,并不提示任何错误信息;
-f:强制操作,常和”--force-vermagic、--force-modversion“一起使用;
-l:列出所有模块;
-a:插入命令行中的所有模块;
-r:移除模块;有时需要强制性操作,这时,多加上”--force“参数;
-s:将错误信息写入syslog中;
Usage:modprobe [ -v ] [ -V ] [ -C config-file ] [ -n ] [ -i ] [ -q ] [ -b ] [ -o modulename ] [ modulename ] [ module parameters... ]
notes:一般地,我们先使用”depmod“生成最新的依赖关系,然后使用”modprobe ext4(.ko)“的形式插入模块,有时由于版本问题,还会使用”--force-modversion“参数;