关于java全栈开发要掌握的技术
- JavaSE
- MySQL
- 前端(HTML、CSS、JS)
- JavaWeb
- SSM框架(可以开始找工作了)
- Springboard
- Vue
- SpringCloud
- Git
- Linux
关于Linux需要掌握的技术
- 消息队列(kafka、RabbitMQ、RockeetMQ)
- 缓存(Redis)
- 搜索引擎(ES)
Linux学习笔记
Linux一切皆文件!
文件操作
-
读
-
写
-
权限(执行、编辑权限)
文件类型说明
文件类型 | 说明 |
---|---|
b | 块设备,是一些提供系统存取数据的接口设备,例如硬盘 |
c | 字符设备,是一些串行端口的接口设备,例如键盘、鼠标、打印机、tty终端 |
d | 目录,类似于Windows的文件夹 |
l | 链接文件,类似于Windows的快捷方式 |
s | 套接字文件(socket),用于进程之间的通信 |
- | 文件,分纯文本文件(ASCII)和二进制文件(binary) |
# 查看文件类型
file filename
Linux文件目录
资料来源:Linux文件目录结构一览表 (biancheng.net)
根目录(一级目录)
Linux 系统的根目录(/)最为重要(没有之一),其原因有以下 2 点:
- 所有目录都是由根目录衍生出来的;
- 根目录与系统的开机、修复、还原密切相关;
根目录必须包含开机软件、核心文件、开机所需程序、函数库、修复系统程序等文件
一级目录 | 功能(作用) |
---|---|
/bin/ | 存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行 |
/boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
/dev/ | 设备文件保存位置 |
/etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 |
/home/ | 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming |
/lib/ | 系统调用的函数库保存位置 |
/media/ | 挂载目录。系统建议用来挂载媒体设备,如软盘和光盘 |
/mnt/ | 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区 |
/misc/ | 挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的 |
/opt/ | 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件 |
/root/ | root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下 |
/sbin/ | 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看 |
/srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
/tmp/ | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
其他一级目录
一级目录 | 功能(作用) |
---|---|
/lost+found/ | 当系统意外崩溃或意外关机时,产生的一些文件碎片会存放在这里。在系统启动的过程中,fsck 工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如,/lost+found 就是根分区的备份恢复目录,/boot/lost+found 就是 /boot 分区的备份恢复目录 |
/proc/ | 虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存到内存中。主要保存系统的内核、进程、外部设备状态和网络状态等。如 /proc/cpuinfo 是保存 CPU 信息的,/proc/devices 是保存设备驱动的列表的,/proc/filesystems 是保存文件系统列表的,/proc/net 是保存网络协议信息的...... |
/sys/ | 虚拟文件系统。和 /proc/ 目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息 |
Linux /usr目录
usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。
Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。
FHS 建议,/usr 目录应具备表 3 所示的子目录。
子目录 | 功能(作用) |
---|---|
/usr/bin/ | 存放系统命令,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行 |
/usr/sbin/ | 存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。 |
/usr/lib/ | 应用程序调用的函数库保存位置 |
/usr/XllR6/ | 图形界面系统保存位置 |
/usr/local/ | 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置 |
/usr/share/ | 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录 |
/usr/src/ | 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过笔者更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中 |
/usr/include | C/C++ 等编程语言头文件的放置目录 |
Linux /var 目录
/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 4 所示的这些子目录。
/var子目录 | 功能(作用) |
---|---|
/var/lib/ | 程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中 |
/var/log/ | 登陆文件放置的目录,其中所包含比较重要的文件如 /var/log/messages, /var/log/wtmp 等。 |
/var/run/ | 一些服务和程序运行后,它们的 PID(进程 ID)保存位置 |
/var/spool/ | 里面主要都是一些临时存放,随时会被用户所调用的数据,例如 /var/spool/mail/ 存放新收到的邮件,/var/spool/cron/ 存放系统定时任务。 |
/var/www/ | RPM 包安装的 Apache 的网页主目录 |
/var/nis和/var/yp | NIS 服务机制所使用的目录,nis 主要记录所有网络中每一个 client 的连接信息;yp 是 linux 的 nis 服务的日志文件存放的目录 |
/var/tmp | 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除 |
根据以上各表列举的各目录及作用,如果我们要做一些实验和练习,需要创建一些临时文件,应该保存在哪里呢? |
答案是用户的主目录或 /tmp/ 临时目录。但是要小心有些目录中不能直接修改和保存数据,比如 /proc/fn/sys/ 目录,因为它们是保存在内存中的,如果在这里写入数据,那么你的内存会越来越小,直至死机;/boot/ 目录也不能保存额外数据,因为 /boot/ 目录会单独分区作为启动分区,如果没有空闲空间,则会导致系统不能正常启动。
总之,Linux 要在合理的目录下进行操作和修改。
体验Linux命令行
shutdown(选项)(参数)
-c:当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令;
-f:重新启动时不执行fsck;
-F:重新启动时执行fsck;
-h:将系统关机;
-k:只是送出信息给所有用户,但不会实际关机;
-n:不调用init程序进行关机,而由shutdown自己进行;
-r:shutdown之后重新启动;
-t<秒数>:送出警告信息和删除信息之间要延迟多少秒。
sync # 将数据由内存同步到硬盘中
shutdown # 关机指令,你可以man shutdown 来看一下帮助文档,例如你可以运行如下命令关机
shutdown -h 10 # 这个命令告诉大家,计算机将在10分钟后关机
shutdown -h now # 立刻关机
shutdown -h 20:25 # 系统会在今天20:52关机
shutdown -h +10 # 十分钟后关机
shutdown -r now # 系统立刻重启
shutdown -r +10 # 系统十分钟后重启
reboot # 就是重启,等同于 shutdown -r now
halt # 关闭系统,等同于 shutdown -h now he poweroff
shutdown +5 "System will shutdown after 5 minutes" # 5分钟关机,同时发出警告
[root@db-server ~]# shutdown -k "now" # 发出警告信息,不关机
Linux应用领域
目前服务器两种主流组合方式:
LAMP(Linux+Apache+MySQL+PHP)
LNMP(Linux+Nginx+MySQL+PHP)
其他:
kali linux:安全渗透测试使用
Linux中没有错误就代表操作成功
mkdir dname # 创建一个文件夹
mv file dname #移动文件到其他文件夹
cd url # 切换目录命令
cd ./ # 指当前文件夹
cd ../ # 返回上个文件夹
ls # 列出所用文件(夹)命令 参数: -a 查看全部文件,包括隐藏目录 -l 列出文件,并显示文件的属性和权限
# 白色 代表一个文件
# 蓝色 代表一个文件夹
常用的基本命令
mkdir dname # 创建一个文件夹
mv file dname #移动文件到其他文件夹
cd [路径] # 切换目录命令
cd ./ # 指当前文件夹
cd ../ # 返回上个文件夹
find filename # 查找文件
su username # 切换用户
init 0 # 关机
init 5 #图形界面
init 6 # 重启
ls # 列出所用文件(夹)命令 参数: -a 查看全部文件,包括隐藏目录 -l 列出文件,并显示文件的属性和权限
exit # 退出指令
[Ctrl]+d # 退出命令行界面
[Ctrl]+c # 强制停止程序
data # 显示时间
bc # 计算机
cal # 日历
who # 查看有谁在线
# 双击[tab]键命令提示
# 白色 代表一个文件
# 蓝色 代表一个文件夹
目录管理
cd 命令 切换目录
cd 目录名(绝对路径都是以/开头,相对路径)
~ # 代表用户主目录
cd home # 切换文件夹
cd / # 进入根目录
mkdir wan # 创建一个叫wan目录(文件夹)
cd ~ # 回到用户目录
pwd # 显示目前用户所在位置(返回一个路径)
mkdir 创建文件夹命令
-p 创建层级文件夹
pwd 显示当前用户所在的目录
白色 代表一个文件
蓝色 代表一个文件夹
rmdir 文件名: 删除目录
-p 强制删除包含其他文件的文件夹
cp(复制文件或者目录)
cp 文件 新的地方
rm (移除文件或者目录)
-f 忽略不存在的文件,不会出现警告,强制删除!
-r 递归删除目录!
-i 互动,删除询问是否删除
rm -rf file # 删除文件
rm -rf / # 删除根目录,会出现警告提示,非root用户只会删除自己的信息
rm -rf /* # 删除根目录下所有的文件,不会出现警告提示,非root用户只会删除自己的信息
# 最后: 如果你是root用户,删库跑路真不好玩,而且删完之后服务器就要重装了,大家可以装个虚拟机试一下
mv 旧地址 新地址,(重命名)
-f 强制
-u 只替换已更新过得文件
# dname表示文件夹名称 # mv 命令的两个功能 # 移动文件 # 重命名 mv file dname #把文件移动到其他文件夹 mv file1 file2 #把文件file1重命名为file2
基本属性
文件操作
-
r 读
-
w 写
-
x 权限(执行、编辑权限)
文件类型说明
文件类型 | 说明 |
---|---|
b | 块设备,是一些提供系统存取数据的接口设备,例如硬盘 |
c | 字符设备,是一些串行端口的接口设备,例如键盘、鼠标、打印机、tty终端 |
d | 目录,类似于Windows的文件夹 |
l | 链接文件,类似于Windows的快捷方式 |
s | 套接字文件(socket),用于进程之间的通信 |
- | 文件,分纯文本文件(ASCII)和二进制文件(binary) |
# 查看文件类型
file filename
文件权限查看方式:
#在任意不为空的目录输入指令ls -l,查看文件权限
#每行前十个字母表示文件的权限,详细解释如下
ls -l
drwxr-xr-x. 2 root root 6 12月 28 21:46 Downloads
#例:
# drwxr-xr-x. 2 root root 6 12月 28 21:46 Downloads
# x 执行
# - 表示没有该用户这个权限
# 2 文件数
# root 属主
# root 所归属的组
# 6 文件所占空间
# / 最后访问或修改时间
# / 目录名或文件名
# 0 d 文件类型
# 123 rwx 属主权限(root)
# 456 r-x 属组权限(管理组、游客组)
# 789 r-x 其他用户权限(其他用户只能读不能写)
修改文件属性
1、chgrp:更改文件属组
chgrp [-R] 属组名 文件名
# -R 递归更改文件属性,就是在更改某个目录文件的属组时,如果加上-R这个参数,那么该目录下的所有文件的属组都会更改
2、chown:更改文件属性,也可以同时更改文件的属组
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
3、chomd:更改文件9个属性
Linux文件属性有两种设置方式,一种是数字,一种是符号
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限
可以用数字来代表各个权限,各权限的分数如下:
# r:4 w:2 x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others = --- = 0+0+0 = 0
修改文件权限:
chmod 770 filename
文件内容查看
Linux系统中使用以下命令来查看文件的内容:
# 查看文件
cat filename
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出tac 是 cat 的倒着写
- nl 显示的时候,顺道输出行号
- more 一页一页的显示文件内容
- less 与more类似,但是比more 可以向前翻页
- head 只看头几行
- tail 只看最后几行
你可以使用man [命令]来查看各个命令的使用文档,如:man cp
# 查看IP地址信息
ifconfig
# 创建文件
touch filename
# 输出一行文字
echo "Linux"
Linux的链接分为两种:硬链接,软链接
硬链接:A---B,假设B是A的硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删
软链接:类似Windows下的快捷方式,删除的源文件,快捷方式也访问不了
touch f1 # 创建一个f1文件
ln f1 f2 # 创建一个硬链接 f2
ln -s f1 f3 # 创建一个软链接(符号链接) f3
echo "i love kuangshen" >> f1 # 给f1文件中写入一些字符串
cat f1 # 查看f1
cat f2 # 查看f2
cat f3 # 查看f3
Vim编辑器
基本上vi/vim共分为三种模式,分别是命令模式(Command mode),输入模式(lnsert mode)和底线命令模式(Last line mode)。这三种模式的作用分别是:
命令模式:
用户刚刚启动vi/vim,便进入了命令模式
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
以下是常用的几个命令:
- i 切换到输入模式
- x 删除当前光标所到处的字符
- : 切换到底线命令模式,以在最低一行输入命令。如果是编辑模式,需要先退出编辑模式 ECS
若想要编辑模式:启动Vim,进入了命令模式,按下i,切换到输入模式
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令
输入模式:
在命令模式,按下i切换到输入模式
在输入模式中,可以使用以下按键:
- 字符按键以及shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- lnsert,切换光标为输入/替换模式,光标将变为竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式:
在命令模式下按下,就进入底线命令模式
底线命令模式可以输入单个或多个字符命令,可用的命令非常多
在底线命令模式中,基本的命令有(已经省略了冒号)
- q 退出程序
- w 保存文件
- wq 保存退出
按ESC键可随时退出底线命令模式
vim filename
# 如果这个文件存在,那就是修改这个文件
# 如果不存在,那就会新建这个文件
账号管理
摘自:Linux账号管理 - konglingbin - 博客园 (cnblogs.com)
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个惟一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除与修改。
- 用户口令的管理。
- 用户组的管理。
一、Linux系统用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
1、添加新用户
useradd 选项用户名
参数说明:
-
选项:
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
-
用户名:
指定新账号的登录名。
实例1
# useradd –d /usr/sam -m sam
此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。
实例2
# useradd -s /bin/sh -g group –G adm,root gem
此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh
,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
这里可能新建组:#groupadd group及groupadd adm
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。
3、删除帐号
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。
删除一个已有的用户账号使用userdel
命令,其格式如下:
userdel 选项用户名
常用的选项是-r,它的作用是把用户的主目录一起删除。
例如:
# userdel sam
此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
4、修改帐号
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod
命令,其格式如下:
usermod 选项用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等
,这些选项的意义与useradd
命令中的选项一样,可以为用户指定新的资源值。
另外,有些系统可以使用选项:-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
例如:
# usermod -s /bin/ksh -d /home/z –g developer sam
此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
5、用户口令的管理
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是passwd
。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:
passwd 选项用户名
可使用的选项:
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:
$ passwd
Old password:******New password:*******Re-enter new password:*******
如果是超级用户,可以用下列形式指定任何用户的口令:
# passwd sam New password:*******Re-enter new password:*******
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
为用户指定空口令时,执行下列形式的命令:
# passwd -d sam
此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。
passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:
# passwd -l sam
其他:
hostname qing # 修改主机名
useradd username # 添加新用户
passwd username # 修改用户密码
passwd -l username # 锁定账户
passwd -d username # 没有密码也不能登录,不是删除
用户组管理
基础部分
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建
创建一个用户组 groupadd
groupadd groupname # 创建用户组
cat /etc/group # 查看用户组
创建完用户组后可以得到一个组的id,这个id是可以进行指定的!例:-g 500,若不指定便是自增
删除用户组 groupdel
groupdel groupname # 删除用户组
cat /etc/group # 查看用户组
修改用户组的权限信息和明细
group -g 666 -n newname oldname # 修改oldname的id为666,名字为newname
/etc/passwd目录
摘自:Linux账号管理 - konglingbin - 博客园 (cnblogs.com)
/etc/passwd文件是用户管理工作涉及的最重要的一个文件
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
这个文件对所有用户都是可读的。它的内容类似下面的例子:
# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/usr/sam:/bin/sh
从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
1)"用户名"是代表用户账号的字符串。
通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(
标签:文件,用户组,用户,笔记,命令,初学,Linux,目录 From: https://www.cnblogs.com/arciab/p/17080951.html