Linux文件的目录结构:树状结构,/为最高的根目录

 root:root用户的个人文件夹(家目录) 
	bin:存放多数用户可用的命令                
	boot:存放启动文件和配置信息,系统启动时会用
	dev:存放设备文件,/dev/hdc代表光驱         
	etc:存放服务配置文件                      
	home:其他用户的家目录                     
	lib:存放程序运行所需要的库文件            
	media:可移动设备的挂载目录                
	mnt:设备挂载目录                          
	usr:用户程序存放目录                      
	var:存放经常改动的数据文件                
	tmp:存放临时文件
	sbin:存放维护系统所需命令,一般仅root可用
	proc:存放核心运行时产生的文件,这些文件位于内存而非硬 盘中
	sys:与proc类似,设计比proc更清晰,文件位于内存
	srv:服务需要的数据的存放目录
	lost+found:文件系统修复时找回的丢失文件
	opt:额外软件安装目录
	misc:不方便归类的杂项文件
	selinux:SELinux文件系统实例
查看一个命令的参数及用法:
	命令 --help
用户管理:
	id:可以查看当前用户
		[lhy@besttest ~]$ id
		uid=501(lhy) gid=501(lhy) 组=501(lhy) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
	whoami:查看当前的用户
		[lhy@besttest ~]$ whoami
		lhy
	who:查看当前已经登录的用户数
		[lhy@besttest ~]$ who
		root     pts/0        2017-05-11 21:41 (192.168.20.1)
		root     pts/1        2017-05-11 22:53 (192.168.20.1)
	w:查看当前已经登录的用户数
		[lhy@besttest ~]$ w
		22:58:21 up  2:09,  2 users,  load average: 0.00, 0.00, 0.00
		USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
		root     pts/0    192.168.20.1     21:41    0.00s  0.11s  0.00s w
		root     pts/1    192.168.20.1     22:53    1:41   0.03s  0.03s -bash
	添加用户  
		useradd lhy #添加用户
		useradd -g groupname uername #添加用户时候制定加入的组名
		passwd lhy #给添加的用户加密码、还可以重置密码
		用户默认的家目录就是在/home/目录下:
			[root@besttest ~]# cd /home/
			[root@besttest home]# ls
			lz
			
		对目录(文件夹)的操作
			pwd 显示当前你所在路径
			cd 进入哪个目录(文件夹)
		~ 波浪线代表家目录:
		快速回到家目录:
			cd ~
			cd
	  	
	切换用户:
			[root@besttest ~]# su lhy
			[lhy@besttest root]$ ls  → root目录是超级用户root的家目录(普通用户的家目录在/home下)
			ls: 无法打开目录.: 权限不够
			[lhy@besttest root]$ exit
			exit
			[root@besttest ~]# su lhy
			[lhy@besttest root]$ exit
			exit
			[root@besttest ~]# su - lhy
			[lhy@besttest ~]$ 
			[lhy@besttest ~]$ pwd
			/home/lhy
			[lhy@besttest ~]$ su lz  → 当前用户是lhy,不是超级用户,要切换到lz用户就需要输入密码
			密码:
			su username
			su - username
			区别就是su - 会重新加载用户的环境变量
			sudo 获取超级用户权限
			添加普通用户的sudo权限:
				/etc/sudoers文件,找到 root ALL=(ALL) ALL 这一行,在它下面加入
				username ALL=(ALL) NOPASSWD:ALL然后保存即可
				加好了之后其它用户输入"sudo su-"就可以切换超级用户了
				sudo -s 切换root用户,不会加载环境变量
	
	删除用户(必须使用root用户才能操作)
		userdel username
		userdel -r xw 删除用户的时候也删除它的家目录
组管理:
 	添加组
 		groupadd name
 	删除组
 		groupdel name
 		
文件操作:
创建文件夹 
	mkdir
	mkdir -p /tmp/besttest/blk
删除文件夹 
	rm -rf /
	rmdir:只能删除空文件夹
查看文件下面的东西:
	ls -l == ll
	ll
 ls -a
改名
	mv besttest linux
	mv besttest /tmp
	mv如果后面跟的是文件名改名,如果后面跟的是路径是移动
 
复制
	cp ax /tmp/ 复制文件
	cp -r linux /tmp/ 复制文件夹
	cp -rf linux
重命名:
	alias lhy=‘cd /opt/lampp‘
	永久生效的话,加到/etc/profile这个里面
 	
路径:
/顶级目录,相当于Windows的我的电脑
相对路径:相当于当前路径
绝对路径:实际的路径
cd ..#回到上一级目录
cd ../../#回到上两级目录
cd - 返回上一次所在的目录
权限:
 所有者的权限 同一组的权限 其他用户的权限
	 rw-          r--          r--
	 rwx分别代表读、写、执行的权限
	 
	加权限:
		x代表执行 w代表写 r代表读
		chmod o+x  其他用户
		chmod g+x  本组用户
		chmod u+x  自己
		chmod +rwx 所有
		chmod a+x 所有
		去掉权限,就是把+变成-
		r=4 w=2 x=1 数字模式代表的权限
		chmod 755 file
		如果加权限的是一个文件夹的话要加 -R 
	
	chown 改变文件的所有者
		chown file user
		如果是一个文件夹的话要加 -R
		[root@besttest tmp]# ll SqlTest 
		-rw-r--r--. 1 lhy lhy 8038 5月  11 16:55 SqlTest	
		[root@besttest tmp]# chown lz SqlTest
		[root@besttest tmp]# ll SqlTest 
		-rw-r--r--. 1 lz lhy 8038 5月  11 16:55 SqlTest
	chgrp 改变文件的所属组
		chgrp file group
		如果是一个文件夹的话要加 -R
		[root@besttest tmp]# ll
		总用量 12
		-rw-r--r--. 1 lhy  root    0 1月  20 20:52 aa
		-rw-r--r--. 1 root root  472 1月  20 20:40 test
		[root@besttest tmp]# chgrp lhy aa
		[root@besttest tmp]# ll
		总用量 12
		-rw-r--r--. 1 lhy  lhy     0 1月  20 20:52 aa
		-rw-r--r--. 1 root root  472 1月  20 20:40 test
wc -l file 统计行数:
|管道符:连接两条命令,把前面的命令执行结果给后面的命令处理
	[root@besttest tmp]# cat test |wc -l
	33
	[root@besttest tmp]# ls |wc -l
	5
&& 连接两条命令,先后执行
	[root@besttest tmp]# ls && wc -l test
	aa  bitrock_installer.log  test  yum.log  yum_save_tx-2015-11-01-00-38wnqS4B.yumtx
	33 test
sh startup.sh && tail -f /logs/catlina.out
对文件的编辑操作:
  vi:
  	切换编辑模式和命令模式:
    	i:当前位置
    	o:当前行的下一行
    	a:下一位置进行编辑
    esc:编辑模式切换到命令模式
    退出vi:
    	命令模式下:
    			退出:
    				":q"#没有修改的话可以直接退出
    				":q!"#不保存退出
    				":wq"#保存退出
    				":x"#也是保存退出
			 		查找:
			 			/test  从头开始找
			 			?test  从文件末尾开始找
 					显示行号:   ":set nu"
 					取消显示行号: ":set nonu"
			 		快去去到某一行:":num"
			 		快速到文件末尾:shift+g
			 		x:删除单个字符
			 		dd:删除整行
			 		19dd:删除19行
			 		u:撤销
			 		yy:复制一整行
			 		19yy:复制19行
			 		p:粘贴
			 		.:重复前一次操作
			 		$:移动光标到行尾
			 		0:移动光标到行首
			 		替换字符串:
			 			":%s/src_str/new_str/g"
			 		
			 		屏幕翻滚类命令 
						Ctrl+u:向文件首翻半屏 
						Ctrl+d:向文件尾翻半屏 
						Ctrl+f:向文件尾翻一屏 
						Ctrl+b;向文件首翻一屏 
	vim:
		在命令模式下ctrl+v 进入可视化编辑模式,选择多列
		shfit+i 进入编辑模式,输入想加的内容
		再按esc
		
查看文件:
 	cat 
 	more 
 	less 
 	tail -f 
 	ln /opt/lampp/xampp ~/wxy
 	
查找:
 	find / -name mysql #查找文件/文件夹
 	grep xxx file 查找文件内容、进程
	 	[lhy@besttest ~]$ grep select /tmp/SqlTest
		select * from Student;
		select * from Student where id between 2 and 4;
		select id,name,department from Student;
		select * from Student where Department="计算机系" or Department="英语系";
 	grep -v 过滤掉指定的关键字
 	grep -w 匹配指定字符串
 	tail -f /opt/lampp/logs/access_log |grep lhy
 	
 	 查看进程:
	 ps -ef|grep mysql|grep -v grep 查找进程,并且不显示grep进程
	 ps只是显示你执行那一时刻的状态
	 top 动态的查看进程,但是不能查找
杀进程:
 kill -9 pid 杀进程 可以跟多个pid
 nohup ./jmeter-server & 在后台运行某个程序
du -sh * 可以看到当前目录下所有文件的占用空间
du -sh dirname 
df -h  可以看到当前磁盘已经使用了多少
 		
上传、下载:
 		ftp工具:直接拖拽、什么都可以上传,要sftp协议
 		rz、sz命令可以直接上传下载,但是它不能上传文件夹
 		rz、sz会话选项x/y/zmodem设置上传下载目录
 		Rzsz命令安装:使用yum安装,yum –y install lrzsz,
		编译安装:http://blog.chinaunix.net/uid-20639775-id-154615.html
开关机、重启:
 	关机
 	shutdown -h 30 #定时关机
 	shutdown -h now #立即关机
 	init 0 #立即
 	reboot 重启
 	shutdown -r 20 "我要重启啦" 定时重启
 
注销用户
 	 exit
网络:
   ip a
   ifconfig 
   dhclient#自动获取ip
压缩、解压文件
   tar cvf linux.tar linux #直接打包,前面是包的名字,后面是你要给谁打包
   tar zcvf linux.tgz linux#   #压缩
   tar zcvf linux.tar.gz linux #压缩
   tar xvf linux.tar linux  #解压,不管你压缩没压缩都能解开
   zip linuz.zip linux 打zip包 → zip需要自己yum
   unzip linuz.zip
   gzip file 只能对文件打包,打包完原来的文件就没有了,需要自己yum
   gunzip file.gz
   
重定向:
 cat xx > new_xx 覆盖原有的内容 
  >xx.log → 清空日志,不需要重启服务
 cat xx >> new_xx  追加
 
定时任务:
 crontab -e 编辑定时任务
 crontab -l 查看当前有哪些定时任务
 crontab 文件的格式为“M H D m d cmd”。
 其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程序,*代表每分钟都执行
 	* * * * * sh /opt/lampp/test.sh 表示每分钟执行一次test.sh这个脚本
	*/5 * * * * sh /opt/lampp/test.sh 表示每5分钟执行一次test.sh这个脚本
	30 21 * * * /usr/local/apache/bin/apachectl restart 表示每晚的21:30重启apache
 示例:
 	crontab -e
 	* * * * * touch /tmp/lhy
 	[root@besttest ~]# crontab -e
	no crontab for root - using an empty one
	crontab: installing new crontab
	到/tmp文件夹下查看:
	[root@besttest tmp]# ls
	bitrock_installer.log  crontab.SjF8er  SqlTest  yum.log  yum_save_tx-2015-11-01-00-38wnqS4B.yumtx
	[root@besttest tmp]# ll lhy
	-rw-r--r--. 1 root root 0 5月  12 07:50 lhy
	[root@besttest tmp]# ll lhy
	-rw-r--r--. 1 root root 0 5月  12 07:51 lhy
查看端口号:
 netstat -nlpt|grep 18983 #查询这个进程号启动端口号是什么
 netstat -nlpt|grep port #可以查看这个端口号有没有被占用
环境变量:
	环境变量的作用就是让一个脚本/命令随便在哪个目录下都能用
	系统环境变量:/etc/profile	→	对所有用户都生效
	用户环境变量:~/.bashrc → 用户的家目录
		ls -al展示目录下所有的文件,包括隐藏文件"."开头的都是隐藏文件
		系统总装了一个mysql,将mysql的目录加入环境变量中
		自己也有个用户,自己装个mysql,这时候有两个mysql,想用自己的mysql,环境变量中加了之前的mysql,那么这时候,可以将自己的mysql配在用户的环境变量中
	export PATH=$PATH:
	source /etc/profile
	source ~/.bashrc
	
	/etc/profile环境变量修改:
		# /usr/share/doc/setup-*/uidgid file
		if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
		    umask 002
		else
		    umask 022
		fi
		
		for i in /etc/profile.d/*.sh ; do
		    if [ -r "$i" ]; then
		        if [ "${-#*i}" != "$-" ]; then
		            . "$i"
		        else
		            . "$i" >/dev/null 2>&1
		        fi
		    fi
		done
		
		unset i
		unset -f pathmunge
		
		
		export PATH=$PATH:/tmp  → 配置环境变量
		"/etc/profile" 81L, 1821C written
		[root@besttest tmp]# ls
		aa  bitrock_installer.log  lhy  test  yum.log  yum_save_tx-2015-11-01-00-38wnqS4B.yumtx
		[root@besttest tmp]# source /etc/profile → 重新引入配置文件
		
		[root@besttest tmp]# whereis ls → whereis 查看命令在哪里
		ls: /bin/ls /usr/share/man/man1/ls.1.gz
		
		env → 用于显示系统中已存在的环境变量
		
		环境变量的例子:
		在tmp目录下,新建脚本lhy:
		[lhy@besttest tmp]$ vi lhy
		echo "love you hongye!"
		[lhy@besttest tmp]$ lhy	→ 系统只会在配置了环境变量的目录下找,所以这个脚本要在任何目录下运行,必须放在已经配置了环境变量的文件夹中
		-bash: lhy: command not found
		或者指定文件所在的目录
		[lhy@besttest tmp]$ ./lhy
		love you hongye!
		[root@besttest tmp]# mv lhy /bin
		[root@besttest tmp]# cd
		[root@besttest ~]# lhy
		love you hongye!!
		[lhy@besttest ~]$ lhy
		love you hongye!
shell脚本:
	shell其实就是多个命令写在一起
	shell里边定义变量必须不能有空格
	ps -ef|grep jmeter|grep -v grep |awk ‘{print $2}‘
	awk ‘{print $2}‘ #取第二列的数据
	示例:
	#!/bin/bash
	count=`ps -ef|grep jmeter|grep -v grep |awk ‘{print $2}‘|wc -l`
	pid=`ps -ef|grep jmeter|grep -v grep |awk ‘{print $2}‘`
	if[ $count -gt 0 ]
	then
	kill -9 $pid
	echo "JMeter stoped."	
	else
	echo "JMeter not runing."
	fi
	
	linux默认的shell解释器就是bash
软件安装:
	rpm:
	 	rpm -ivh xx.rpm #安装
	 	rpm -e xxxxx #卸载
	 	rpm -qa|grep xxx#查询是否已经安装这个软件
	 	rpm –qa >list.txt 把已经安装软件包都输出到list.txt这个文件中
	 	用rpm安装包安装完后,不需要自己加环境变量,会自己创建好
 	yum:
 		红帽系列系统自带的
 		xx yum -y install xxx
 		下载红帽系统的时候,一般会有两个ISO文件,一个ISO1是系统的安装文件,一个ISO2yum源是相关软件的安装包,如果上不了外网的话,就将ISO2挂载到系统上,执行安装
 		常用命令:
 		yum install httpd#安装Apache
		yum -y install httpd#如果有选项全部同意安装
		yum list|grep httpd#从yum列表中查找你需要的软件
		yum update httpd #yum升级Apache
		yum list installed |grep mysql#查询是否安装mysql
		yum remove mysql#卸载yum安装的mysql
 	源码安装:
 		什么是gcc:gcc是GNU Compiler Collection的缩写。最初是作为C语言的编译器,现在已经支持多种语言了,如C、C++、Java、Pascal、Ada、COBOL语言等
		因为linux上的软件包基本上都是c语言开发的,所以要安装gcc来编译源码进行安装
		yum -y install gcc*
		
 		./configure --prefix=/path#生成编译文件
 		make #编译
 		make install #把编译好的文件放到你指定的目录下
Rzsz命令安装:使用yum安装,yum –y install lrzsz,
编译安装:http://blog.chinaunix.net/uid-20639775-id-154615.html
环境搭建:
	1、下载依赖软件、安装好
	2、获取源代码(打包)
			根据语言的不同,看看是否需要编译、打包
	3、导入基础数据
	4、修改配置文件
	5、启动
			JAVA程序(tomcat、weblogic、jetty、resin、ws)
			php、ruby、python(nginx、apache)
	
	日常部署:
		1、获取最新代码(编译、打包)
				如果有表结构变更,需要执行sql
		2、修改配置文件
		3、重启程序
		
获取系统时间:
	[root@besttest ~]# date +%Y%m%d%H%M%S
	20170121095305
1、每天23:59分备份lampp
	备份的文件名以当时的时间命名
	201612241852_acces.log
	/tmp/logs/
	
	cd /opt/lampp/logs/access_log
	
	①在bin中写一个bak_log.sh脚本:
		src_path=‘/opt/lampp/logs/access_log‘
		tar_path=‘/tmp/logs/‘
		time=`date +%Y%m%d%H%M%S`
		
		cp -rf ${src_path} ${tar_path}${time}_access_log
		>${src_path} → 清空源日志,不需要重启服务
	②crontab -e
		59 23 * * * sh bak_log.sh
		
		说明:因bak_log.sh脚本是放在bin目录下,bin目录已经配置在环境变量中,故在写crontab时,bak_log.sh不需要指定文件的绝对路径
					如若bak_log.sh脚本所处的文件夹没有配置在环境变量中,在写crontab时,bak_log.sh需要指定文件的绝对路径,如下:
						45 13 * * * sh /tmp/bak_log.sh
------------------------------------------------
相关工具的使用:
sumline:
首选项 → 设置 → 默认 打开配置文件:
将文件末尾的 "ignored_packages": ["Vintage"] 中括号中的"Vintage"去掉,就可以使用linux的vi命令了
//"ignored_packages": ["Vintage"]
"ignored_packages": []
当从windows上传到linux的文本文件出现乱码时,是由于windows的编码方式和linux的不一样,使用sublime 文件 → 设置文件编码,使得需要上传的文件编码方式和linux上的编码方式是一样的(文件另存为也可以设置),就不会出现乱码了。
XShell:
配置选中文本右键粘贴:工具 → 选项 → 键盘和鼠标

另外xshell中,有个功能可以根据文件名的颜色判断文件的类型:
1)默认色代表普通文件。 例:install.log
2)绿色代表可执行文件。 例:rc.news
3)红色代表tar包 文件。 例:vim-7.1.tar.bz2
4)蓝色代表目录文件。 例:lhy
5)水红代表图象文件。 例:lhy.jpg
6)青色代表链接文件。 例:rc4.d (此类文件相当于快捷方式)
6)黄色代表设备文件。 例:fd0
------------------------------------------------------------------

原文:http://www.cnblogs.com/lz2lhy/p/6843634.html