Linux学习笔记
-
-
- 2.1.1,列出目录(ls)
- 2.1.2,切换目录(cd)
- 2.1.3,创建目录(mkdir)
- 2.1.4,删除目录(rmdir)
- 2.1.5,复制文件或目录(cp)
- 2.1.6,移除文件或目录(rm)
- 2.1.7,移动、重命名文件或目录(mv)
- 2.2,文件属性查看和修改
-
- 2.2.2,修改文件属组(chgrp)
- 2.2.2,修改文件属主(chown)
- 2.2.3,更改文件的九个属性(chmod)
-
- 2.3.1,可用于读取文件内容
-
-
- 5.1,添加用户(useradd)
- 5.2,删除用户(userdel)
- 5.3,修改用户(usermod)
- 5.5,用户的密码设置问题(passwd)
-
- 6.1,增加用户组(groupadd)
- 6.2,删除用户组(groupdel)
- 6.3,修改用户组(groupmod)
-
- 8.1,查看当前系统中正在执行的进程信息(ps)
- 8.2,查看父进程信息(pstree)
- 8.3,结束进程(kill)
1,简单说明
Linux操作系统下:
- 一切皆文件
- 根目录“ / ” ,所有的文件都挂载在这个节点下
服务器中一些目录的说明:
-
/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:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。( 不用管 )
-
/root:该目录为 系统管理员 ,也称作超级权限者的用户主目录。
-
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
-
/srv:该目录存放一些 服务启动之后需要提取的数据 。
-
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个 文件系统 sysfs 。
-
/tmp:这个目录是用来存放一些 临时文件 的, 用完即丢的文件可以放此处,如安装包 。
-
/usr:这是一个非常重要的目录, 用户的很多应用程序和文件都放在这个目录下 ,类似于windows下的program files目录。
-
/usr/bin: 系统用户使用的应用程序。
-
/usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序 。
-
/usr/src: 内核源代码默认的放置目录。
-
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些 经常被修改的目录放在这个目录下。包括各种日志文件。
-
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
-
/www:存放服务器网站相关的资源,如环境、网站项目
2,Linux基本常用命令
2.1,目录管理
2.1.1,列出目录(ls)
-
-a参数:查看全部文件,包括隐藏文件。a表示all
-
-l参数:列出隐藏文件之外的所有文件,包含文件的属性和权限
-
-al参数:想查看所有文件(包括隐藏文件)的属性和权限,就可以考虑组合使用。
2.1.2,切换目录(cd)
格式:cd 目录名。(目录名可以是绝对路径或相对路径)
-
绝对路径以 “/” 开头
-
使用相对路径表示对于当前目录如何寻找
-
cd /:回到根路径下
-
cd ~:直接进入当前用户目录
2.1.3,创建目录(mkdir)
mkdir 目录名:创建目录
mkdir -p xx/yy/zz:创建层级目录,如下图
2.1.4,删除目录(rmdir)
注意:
rmdir命令不能删除不为空的文件夹。
,如下图:
2.1.5,复制文件或目录(cp)
格式:cp 原来的地方 新的地方
- -i 参数:覆盖已有文件前,提示用户确认,是否进行覆盖。
- –r 参数:递归复制目录,即复制目录下所有层级的子目录及文件。
复制文件:
复制之后如果再次复制会询问是否覆盖,如下图:
复制目录:
-r 表示递归的意思。此处为递归复制。
2.1.6,移除文件或目录(rm)
- -f参数:忽略不存在的文件(强制删除,不出现警告)。f表示force
- -r参数:递归删除目录
- -i参数:互动,询问是否删除。i表示interaction
rm -rf /*:r、f两参数结合表示删除系统根目录下的所有内容。即删库跑路!!!不建议使用。
2.1.7,移动、重命名文件或目录(mv)
-
-f参数:表示强制移动,不出现警告
-
-u参数:复制过去如果重复,则只替换已经更新过的文件
-
移动回去:
mv命令还可以重命名文件。
2.2,文件属性查看和修改
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
2.2.1,文件属性介绍
文件详细属性查看,以下两种方式都可以:
- ll
- ls -l
我们在上面已经介绍了 ls-l命令查看文件属性 ,如下图:
上面最左侧第一列是十个字符。
其中第一个字符代表这个文件是目录还是文件或是链接文件等等:
- 第一个字符为 d 说明是文件目录(directory)
- 第一个字符为 l 说明是一个链接文档(link)
- 第一个字符为 - 则是文件
- 第一个字符为 b 则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 )
- 第一个字符为 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )
接下来的9个字符中,以三个为一组分为三组,且均为 rwx 的三个参数的组合:
- 其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)
- 要注意的是, 这三个权限的位置不会改变,如果没有权限,就会出现减号 -
文件类型 | 属主权限 | 属组权限 | 其他用户权限 |
---|---|---|---|
0 | 1 2 3 | 4 5 6 | 7 8 9 |
d | r w x | r-x | r-x |
目录文件 | 读 写 执行 | 读 - 执行 | 读 - 执行 |
如上表示的意思是:
- 属主权限:root用户权限可读可写可执行
- 属组权限:游客组,管理组可读可执行
- 其他用户权限可读可执行
2.2.2,修改文件属组(chgrp)
修改文件属组格式:chgrp -R 属组名 文件名( chgrp即change gooup )
chgrp -R root www
其中-R:递归更改文件属组 ,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
2.2.2,修改文件属主(chown)
修改文件属组格式:chown -R 属主名 文件名( chown即change owner )
chown -R root www
把属组和属主改回来:
chown可以同时修改属主和属组!!!:chown -R 属主名:属组名 文件名
chown -R www:www www
2.2.3,更改文件的九个属性(chmod)
此时如果想要 更改属性 ,也是可以的,使用的就是 chmod 。
Linux文件属性有两种设置方法,一种是数字,一种是符号。
①使用数字更改属性(常用)
- r:4
- w:2
- x:1
如果想要设置所有用户均为可读可写可操作(rwxrwxrwx),即使用 chmod 777 文件名
其中每一个7都代表rwx三个的值相加。如数字6则代表可读可写不可执行。
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx—] 分数则是:
owner = rwx = 4+2+1 = 7 group = rwx = 4+2+1 = 7 others= --- = 0+0+0 = 0
使用命令: chmod 770 filename
演示:
2.3,文件查看命令
注意:CentOS 7的网络配置目录:etc/sysconfig/network-scripts下
(注意ifconfig命令表示查看网络配置)。
2.3.1,可用于读取文件内容
① cat :从第一行开始显示文件内容
② tac :从最后一行开始显示文件内容,可以看出tac是cat倒着写得来的
③ nl:显示的时候,顺道输出行号(如看代码的时候希望显示行号,可以使用此命令)
④ more :一页一页的显示文件内容
- 空格键代表翻页
- 回车代表向下走一行
- :f 代表显示当前行号
- q 代表立刻退出more,不再显示文件内容
- b表示往回翻页,只对文件有效
⑤ less : 与more类似,但是比more更好的是,它可以往前翻页(建议使用)
- 空格向下翻页
- 上下键代表翻动页面
- 使用q退出less
- /字符串:向下搜索字符串(n表示向下寻找一个;N表示向上寻找一个)
- ?字符串:向上搜索字符串(n表示向下寻找一个;N表示向上寻找一个)
⑥ head :只看头几行。(语法: head -n number 文件 )
通过 -n参数来控制显示几行。
⑦ tail :只看尾几行(语法: tail -n number 文件 ),与head类似
3,硬链接和软链接
Linux链接又分为两种:
- 硬链接(Hard Link):假设B是A的硬链接,则它们两个指向同一个文件!允许一个文件拥有多个路径。如A文件比较重要,怕被误删;可以设置一个硬链接,则A即使被删除了还有B存在。这样用户就可以建立硬连接到重要文件,以防止“误删”。
- 软链接(Symbolic Link):也叫符号链接。类似于Windows下的快捷方式。删除了源文件,软链接也无法访问。
创建硬链接(ln 命令):
注意:touch命令用于创建文件
创建软链接(ln -s):
echo命令向文件里输入字符串:
往f1中写入,字符串“i love woniu”后,链接过去的文件f2,f3内容都发生了改变
删除f1文件:
删除后源文件f1之后发现,f2(硬链接还可以继续访问);f3(软链接会失效,类似快捷方式),如下图:
4,Vim编辑器
- Vim是从 vi 发展出来的一个文本编辑器
- Vim中代码补完、编译及错误跳转等方便编程的功能特别丰富,在Linux在程序员中被广泛使用
- Vim中查看内容、编辑内容和保存内容十分重要
vim 文件名:如果此文件存在,就进入修改此文件;如果文件不存在,就会新建此文件
通过 vim linuxstudy.txt 创建一个linuxstudy.txt文件
基本上 vi/vim 共分为三种模式,分别是 命令模式 , 输入模式 和 底线命令模式 。
通过例子理解三种模式:
①用户刚进入Vim即进入了 命令模式 ,如下图:
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
-
i 表示切换到输入模式,以输入字符
-
x 表示 删除当前光标所在处的字符
-
: 表示切换到底线命令模式,以在最底一行输入命令
-
…
②在命令模式中 使用 i 键进入输入模式 (insert),如下图:
③命令模式下 使用 :进入底线命令模式 ,如下图:
使用esc键:把输入模式切换回命令模式
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
-
q 退出程序
-
w 保存文件
使用wq组合可以表示存档并退出。
按ESC键可随时退出底线命令模式。
以上的一个完整流程可以叙述为:
①先新建或编辑文件(vim),按 i 进入编辑模式
②编写内容,编写完成后退出编辑模式(esc)
③退出编辑模式之后进入底线命令模式
④输入wq表示保存并退出
一些比较重要的vim命令:
- :set nu:设置行号,代码中常用
- :set nonu:于set nu相反,为取消行号
- :数字加空格:快速切换光标位置
- /word :向光标之下寻找一个名为word的字符串
- n:向下寻找一个(和/word搭配)
- N:向上寻找一个(和/word搭配)
- :u:撤销上一步操作
- ctrl + r:恢复上一步被撤销的操作
5,Linux账号管理
公司中,一般员工用的应该都不是root用户。
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
5.1,添加用户(useradd)
useradd -选项 用户名:添加用户
其中选项有很多,如:
-
-m:自动创建这个用户的主目录。如创建用户名hzbhzb,就会在home目录下创建此目录
-
-c: comment ,指定一段注释性描述
-
-g: group用户组 ,指定用户所属的用户组
-
-G:用户组,用户组 指定用户所属的附加组
-
-s:Shell文件 指定用户的登录Shell
-
-d:目录, 指定用户主目录。如果此目录不存在,则同时使用-m选项,可以创建主目录。
Linux中一切皆为文件,这里的添加用户说白了就是往某一个文件(/etc/passwd)中写入用户的信息!如下图:
每条信息显式的格式为:
用户名 : 口令(登陆密码,不可见): 用户标识号 : 组标识号 : 注释性描述 : 主目录 : 登录shell
5.2,删除用户(userdel)
删除用户的时候一般将他的目录也一并删除(通过 -r 参数指定)
删除之后,配置文件/etc/passwd中的hzbhzb记录也被删除。
5.3,修改用户(usermod)
修改账户常见参数(和useradd的一样):
-
-m:自动创建这个用户的主目录。如:创建用户名hzbhzb,就会在home目录下创建此目录
-
-c: comment ,指定一段注释性描述
-
-g: group用户组 ,指定用户所属的用户组
-
-G:用户组,用户组 指定用户所属的附加组
-
-s:Shell文件 指定用户的登录Shell
-
-d:目录, 指定用户主目录。如果此目录不存在,则同时使用-m选项,可以创建主目录。
通过useradd添加一个hpu用户,然后对其进行修改(通过-d指定用户主目录),如下图:
5.4,切换用户(su)
su hpu :切换搭到hpu用户,如下图:
还可以通过exit退回root用户,如下图:
注意:
在阿里云买完服务器连接之后主机名为一串无规则字符,如下图:
此主机名可以进行查看和临时修改:
- hostname:查看主机名
- hostname 新主机名,临时修改为新主机名
5.5,用户的密码设置问题(passwd)
我们一般通过root创建用户的时候,需要配置密码!
①root权限给用户hpu设置密码(passwd 用户名),如下图:
这时,再新建连接使用hpu连就需要刚才设置的密码才能连接
②在hpu用户权限下,修改密码(passwd),如下图:
5.6,锁定账户
root权限下,比如张三辞职了!冻结此账号,一旦冻结张三就不能登录系统了。
通过命令:passwd -l hpu (其中l代表lock)
锁定之后,相应用户就无法登陆此服务器。
公司中一般员工拿不到root权限
6,Linux用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(运维,测试,开发,root)。
6.1,增加用户组(groupadd)
创建名为hhh的用户组
查看用户组在 /etc/group
其中,groupadd可以指定选项:
-
-g GID 添加用户的时候,指定新用户组的组标识号(组id)
注意:如果组id不指定,默认是自增1
-
-G:添加用户的时候,给用户分配组
-
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
6.2,删除用户组(groupdel)
删除hhh2,删除之后查看 /etc/group 就没有hhh2的记录了
6.3,修改用户组(groupmod)
-
-g GID :为用户组指定新的组标识号
-
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同
-
-n新用户组 :将用户组的名字改为新名字
组id改为666,组名字改为newhhh,如下图:
7,Linux磁盘管理
7.1,df命令
df命令:(列出文件系统整体的磁盘使用量),可以结合以下一些选项使用:
df命令常见选项:
- -h:以易于阅读的MB、GB、KB等为容量单位进行查看
- -k :以 KB 的容量显示各文件系统
- -m :以 MB 的容量显示各文件系统
- -a :列出所有的文件系统,包括系统隐藏的
- -H :以 M=1000K 取代 M=1024K 的进位方式
- -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出
7.2,du命令
du命令(检查磁盘空间使用量),可以结合以下一些选项使用:
- -a:显示全部,包括隐藏的
- -s :列出总量而已,而不列出每个各别的目录占用容量
- -S :不包括子目录下的总计,与 -s 有点差别
- -m :以 MB 列出容量显示;
- -k :以 KB 列出容量显示;
- -h :以人们较易读的容量格式 (G/M) 显示;
7.3,磁盘的挂载(mount)和卸除(umount)
挂载使用mount命令:
- mkdir /mnt/kuang:表示创建目录kuang
- mount /dev/hhh /mnt/kuang:表示把/dev/hhh挂载到/mnt/kuang下
卸除使用umount命令:(可用通过-f表示强制卸除)
- umount -f /dev/hhh
8,Linux进程管理
- Linux中每一个程序都有一个进程,每一个进程都有一个id。
- 每一个进程都有一个父进程
- 进程可以有两种存在方式:前台、后台
- 一般服务都是后台运行的,基本的程序都是前台运行的!
8.1,查看当前系统中正在执行的进程信息(ps)
①可用通过ps -help 或 man ps查看此命令的帮助信息
②在Linux中 “|” 被称为管道符 ,A|B表示A命令的结果作为输出操作B命令
ps命令,参数选项如下:
- -a :显示当前终端运行的所有进程信息
- -u :以用户的信息显示进程
- -x :显示后台运行进程的参数
ps -aux:查看所有的进程
grep表示查找文件中符合条件的字符串。
ps -aux|grep mysql:只查看MySQL相关的进程。表示把所有的进程都查出来,然后过滤其他的。
8.2,查看父进程信息(pstree)
查看父进程信息(pstree),常用参数如下:
- -p 显示id
- -u 显示用户组
pstree -pu :就可以清楚的查看父进程信息(树状显示)
8.3,结束进程(kill)
如果平时写的Java代码死循环了,就可以结束进程!
kill -9 进程id:表示强制停止进程