linux 目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux: 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv: 该目录存放一些服务启动之后需要提取的数据。
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:这个目录是用来存放一些临时文件的。
/usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
修改root密码
sudo passwd root
修改IP地址
1 | vi /etc/sysconfig/network-scripts/ifcfg-eth0 #IP地址永久生效 |
ifcfg-eth0文件说明
- DEVICE=eth0 网卡对应的设备别名,如ifcfg-eth0第一块网卡
- BOOTPROTO=static 网卡获得ip地址的方式 Static(静态 ip地址)
- dhcp(通过dhcp协议获取ip)
- bootip通过bootp协议获得的ip地址
- BROADCAST=192.168.0.255 子网广播地址
- HWADDR=00:50:56:8E:47:EE 网卡物理地址
- IPADDR=12.168.1.117 网卡IP地址
- IPV6INIT=no 是否启用
- IPV6IPV6_AUTOCONF=no
- NETMASK=255.255.255.0 网卡对应网络掩码
- NETWORK=192.168.1.0 网卡对应的网络地址
- ONBOOT=yes 系统启动时是否设置此网络接口,设置为yes时,系统启动时激活此设备。默认设置为yes
- 至于后面的 TYPE 和UUID这个就不用管了,这网卡的类型
查看linux发行版本
1 | lsb_release -a |
文件
文件属性
更改文件属主
1 | chown [–R] 属主名 文件名 |
更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。文件的权限字符为:『-rwxrwxrwx』
, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4
w:2
x:11
2chmod [-R] xyz 文件或目录
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
例如设定一个文件的所有权限1
2
3
4
5[root@www ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
==如果要将权限变成 -rwxr-xr– 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754==
符号类型改变文件权限
九个权限分别是(1)user (2)group (3)others三种身份,那么我们就可以由u, g, o来代表三种身份的权限!
如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:
1
2
3
4
5
6 # touch test1 // 创建 test1 文件
# ls -al test1 // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r test1 // 修改 test1 权限
# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1
==而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:==
1 | # chmod a-x test1 |
复制文件
1 | cp source dest #复制文件 |
删除目录
1 | rmdir deleteEmptyFolder #删除空目录 |
移动文件
1 | mv /temp/movefile /targetFolder |
重命名
1 | mv oldNameFile newNameFile |
查看端口占用情况
1 | netstat -tln | grep 8080 #查看端口8080的使用情况 |
查看端口属于哪个程序
1 | lsof -i :8080 |
以树状图列出目录的内容
tree是一种递归目录列表命令,产生一个深度缩进列表文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 yum install tree #一般系统不带这个要安装
tree命令行参数:
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
文件下载
1 | wget http://file.tgz |
远程登录
1 | ssh userName@ip |
查看机器的负载情况
1 | $ uptime |
uptime可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。
命令的输出分别表示1分钟、5分钟、15分钟的平均负载情况。通过这三个数据,可以了解服务器负载是在趋于紧张还是区域缓解。如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。
查看系统内存的使用情况
1 | [root@localhost home]# free -h |
free命令可以查看系统内存的使用情况,-h参数自动按合适的单位展示。最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数。需要注意的是,第二行-/+ buffers/cache,看上去缓存占用了大量内存空间。这是Linux系统的内存使用策略,尽可能的利用内存,如果应用程序需要内存,这部分内存会立即被回收并分配给应用程序。因此,这部分内存一般也被当成是可用内存。
java开发常用
1.查找文件
find / -name filename.txt
根据名称查找/目录下的filename.txt文件。
find . -name "*.xml"
递归查找所有的xml文件
find . -name "*.xml" |xargs grep "hello world"
递归查找所有文件内容中包含hello world的xml文件
grep -H 'spring' *.xml
查找所以有的包含spring的xml文件
find ./ -size 0 | xargs rm -f &
删除文件大小为零的文件
ls -l | grep '.jar'
查找当前目录中的所有jar文件
grep 'test' d*
显示所有以d开头的文件中包含test的行。
grep 'test' aa bb cc
显示在aa,bb,cc文件中匹配test的行。
grep '[a-z]\{5\}' aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
2.查看一个程序是否运行
ps –ef|grep tomcat
查看所有有关tomcat的进程
ps -ef|grep --color java
高亮要查询的关键字
3.终止线程
kill -9 19979
终止线程号位19979的进程
4.查看文件,包含隐藏文件
ls -al
5.当前工作目录
pwd
6.复制文件
cp source dest
复制文件
cp -r sourceFolder targetFolder
递归复制整个文件夹
scp sourecFile romoteUserName@remoteIp:remoteAddr
远程拷贝
7.创建目录
mkdir newfolder
8.删除目录
rmdir deleteEmptyFolder
删除空目录 rm -rf deleteFile
递归删除目录中所有内容
9.移动文件
mv /temp/movefile /targetFolder
10.重命令
mv oldNameFile newNameFile
11.切换用户
su -username
12.修改文件权限
chmod 777 file.java
//file.java的权限-rwxrwxrwx,r表示读、w表示写、x表示可执行
13.压缩文件
tar -czf test.tar.gz /test1 /test2
14.列出压缩文件列表
tar -tzf test.tar.gz
15.解压文件
tar -xvzf test.tar.gz
16.查看文件头10行
head -n 10 example.txt
17.查看文件尾10行
tail -n 10 example.txt
18.查看日志类型文件
tail -f exmaple.log
//这个命令会自动显示新增内容,屏幕只显示10行内容的(可设置)。
19.使用超级管理员身份执行命令
sudo rm a.txt
使用管理员身份删除文件
20.查看端口占用情况
netstat -tln | grep 8080
查看端口8080的使用情况
21.查看端口属于哪个程序
lsof -i :8080
22.查看进程
ps aux|grep java
查看java进程
ps aux
查看所有进程
23.以树状图列出目录的内容
tree a
24. 文件下载
wget http://file.tgz
curl http://file.tgz
25. 网络检测
ping www.just-ping.com
26.远程登录
ssh userName@ip
27.打印信息
echo $JAVA_HOME
打印java home环境变量的值
28.java 常用命令
java javac jps ,jstat ,jmap, jstack
29.其他命令
svn git maven