Linux学习笔记

ls - la ls == list 目录 ls -a隐藏文件 ls -l 长格式显示 ,显示更多 ls -h 显示字节换算后 ,ls -ld /etc 显示当前目录信息 ls -i 查看i节点标识
mkdir /tmp/wz/1 /tmp/wz/2 cd … 空格点点 cd /tmp/wz rmdir 扩:mkdir 可以/wz /wz/1 ,不能没有先创建wz 就直接创/wz/1
pwd printworkingdirectory 显示当前目录
cp 源目录和文件名 目标目录的子目录或文件可改名 -r 复制目录 -p 保留文件属性 如时间不变 是否覆盖相同文件 :y 或 n
mv 源目录 目标目录 剪切,改名 在目录中可省略前面的路径,从当前目录开始往后的路径
rm 文件名 是否删 y 删除前做好备份 rm -f 没有后悔机会,不询问直接删 rm -r 删除目录 rm -f / 危险危险危险 删除全部
Ctrl c 终止命令 Ctrl+l 清屏 或clear命令清屏

tough 创建文件(写文件名) wz 不建议名字用空格之类的特殊字符 空格会创2个 ,除非用“wz1 2”,但查询是很复杂
浏览文件内容:
cat 文件名 命令倒过来写即 tac 倒着显示文件
more 浏览文件内容 回车一行一行 ,空格或f一页一页翻 q退出 //不能往上翻
less 可以向上 键盘按钮PgUp往上翻页,上箭头向上一行
head -n 查看前几行 tail -n 查看末尾几行 tail -f 动态显示文件末尾内容 如查看日志文件时,进行远程操作后改变ip等,文件中会看到信息变化
链接:
ln 原文件 目标文件 ln ==link (链接) ln -s 生成一个软连接(soft)lrxwxrwxrwx软链接权限王炸 ln 生成硬链接 -rwxrwxrwx
显示的文件内存小,软链接仅仅是一个符号链接。
硬链接 == cp -p +同步更新 ,删除原文件,软链接失效,硬链接仍可以访问,因为它是针对i结点处理的。
但硬链接不能跨分区 C盘到D盘。软链接 如快捷方式可以

权限管理命令:
chmod (change …) chmod {ugoa} {±=} {rwx} [文件或目录] ugoa 所有者 所属组 其他人 三者一起改all
如 chmod u+s o-r g=rwx 实际用 r 4 ,w2 ,x1 ,rwx 就写7
如 chmod 666 chmod -R 777 /tmp/a/b 递归修改,会修改目录权限的同时会修改该目录下所有文件的权限,注意R大写
注意rwx对文件和目录的不同理解 文件权限对应意义 r : cat ,w :用vim写文件 x:script command
很细节 文件权限对应意义 r :ls ,w :touch /rmdir(对这个文件的目录有写权限才可以删文件) x:cd 可以进目录
目录必是rx一起有或无
chown [用户] [文件或目录] 改变所有者只有管理员root可以 ,改变的所有者必须会已经创建或存在的用户
chgrp 改变所属组 [用户] [文件] 最开始创建者为所有者
umask -S(大写) 查看ugo的权限 Linux默认新建的文件不具有可执行权限,病毒不可执行安全考虑
umask 改变默认参考值 如原本777,改成077,写出对应的权限【逻辑与】运算得到真实赋予的权限 可更改缺省文件或目录的权限
例子: 777 rwx rwx rwx //好像运算有规律, 猜想用减的刚好
022 — -w- -w- //umask 022
实际赋予权限为755 rwx r-x r-x 目录 ,但对应文件 rw- r-x r-x

文件搜素命令:
find [文件名] / 搜全部 , /etc -name init 只会收缩到是init的 , /etc -name init* 为init开头的 /etc iname 不区分大小写
/etc name *匹配任意字符 /etc name ?匹配单个字符 如init后有两个字符 :init
find / -size + // 1数据块 512字节 0.5k (-a表示两个条件都满足)(-o表示两个条件只要满足一个)
// 100MB=102400KB=204800 如find / -size +204800 查找大于100MB的文件 -a(联立之前的) -102400 小于50MB的文件
fing /home -user wz[所有者名称] ,也可为用所属组查找 find /etc -size +204800 -a -102400
find /etc -cmin -5 减号表示之内 ,amin按访问时间查找,cmin表示属性更改,mmin文件内容更改查找 , 5分钟之内属性被改变过的文件 +30 搜索更改文件超过30分钟的
find /etc -name inittab(文件名) -exec/-ok(对找到的结果直接操作) 【输入操作】 {}
如 find /etc -name inittab -exec ls -l {} 查看找到的文件信息 ; 用-ok要确认y或n find /etc -name inittab(文件名) -ok ls -l{}
find -type f(文件)或d(目录)或l(软链接文件)
find -inum 根据i节点查找 find .-inum 31531 -exec rm {} find /etc iname -size +1000 -a -20000
其他搜索命令:
locate 【文件名】直接找建立的文件资料库所以很快,cpu占用少。 updatedb手动更新数据库 临时文件目录temp中文件会搜不到
which 可以查找到文件在哪个目录,别名(外号) rm(创建别名) = ‘rm -a’ 这样使用rm也要询问了
whereis 搜索命令所在目录及其帮助文档路径
grep -iv 【指定字串】【文件】 i不区分大小写 v排除指定字串 在文件中搜索指定字串匹配的行并输出行 #表示配置文件的注释 想去掉# ,用v^#

帮助命令:
man [命令名称] man==mannul 右键,翻页与之前一样 NAME看第一行知道命令是干什么用的 在用-l找到帮助文件中有-l相关的行
man 【加配置文件名称】, “不要写成/etc/wz 会显示所有,不好找 ,只要 man wz 就可以”
看配置文件干什么用的 一句话描述 ,配置文件的格式 man 5 passwd 有文件也有命令,要查命令 1 是命令的帮助 ; 5 是配置文件的帮助
whatis is 【命令】 只查看知道命令是干什么用的
apropos 查看配置文件的简短信息 info ==information
【命令】 --help 命令常见扩展的选项 如touch --help
例子: man date 查看date更改时间的格式,再使用date
help 获得shell内置的命令配置信息(找不到命令路径的命令都是内置命令) 如help umask

用户管理命令: (简单铺垫,后面有详细的)
useradd 【用户名】 useradd与passwd两个为重点
passwd 【用户名】 普通用户密码过于简单不行,root用户更改可以重新确认123456就行 ,root用户可以更改任何人,可以把普通用户密码改简单
who 登录终端 tty本地终端 pts远程终端 登录时间 IP地址
w 可以得到比who更详细的信息 up连续运行时间 IDLE累积空闲时间(无操作的时间)JCPU占用CPU资源 load average 3段时间的负载情况,一般指CPU 。
命令uptime 也可以看到w命令类似的首行信息
压缩文件命令:
gzip 【文件】 //不保留原文件 压缩后文件格式 .gz
gunzip 【压缩包名称】 解压缩 或 (gzip -d)
tar 打包目录 // -c 打包 -v显示详细信息 -f显示文件名 -z打包同时压缩 压缩后文件格式 .tar.gz // tar -zcfv
tar 解压缩 // -x 解包 其他一样 -v显示详细信息 -f显示文件名 -z打包同时解压缩 // tar -zxvf
zip 选项-r(压缩目录)//这里要注意是写压缩后文件名【压缩后文件名】【文件或目录】 //会保留原文件 压缩后文件格式 .zip 默认 windows与linux都支持,
把Linux压缩包传到windows支持,反过来不一定
unzip 【压缩文件名】 //解压缩 ,解压缩询问是否替换与原文件一样的文件
bzip2 选项-k【文件】 //zip的升级 , 产生压缩包后保留原文件 ,压缩后格式 .bz2
bunkzip2 可加k保留压缩文件【压缩包文件名】 也可以 tar -xvf 压缩文件名

write 【用户名】 给用户发信息 写情书 Ctrl +D 保存结束 ,写错用Ctrl +退格键
wall 【message】 原意给write all 给所有人发送 包括自己发送广播信息,渣男,
ping 选项【-c 次数】(指定次数) IP地址 如ping -c 3 192.168.1.1
ifconfig 【网卡名称 IP地址】(原意为interface configure接口配置)查看设置网卡信息 lo本机测试 etho inet 192.168.1.1 执行权限:root
mail 【用户名】 例子 mail root 查看发送的电子邮件
last 列出计算机所有登录的用户信息 //重要类似日志
lastlog 选项【-u只看某个用户】【用户的UID 如:502】先列出所有用户,最后一次登录时间
traceroute 显示数据包到主机间的路径
netstat 选项【-t : TCP协议 -u : UDP协议 -l :监听 -r :路由 -n :显示IP地址和端口号,省去解析过程】 如netstat -tlun -an显示全部的-n选项
查网关 netstat -rn
setup 图形界面配置网络 , 配完更新网络服务service network restart
补充挂载:mount 【-t 文件系统】 文件名 挂载点 (这是固定的)iso9660 /dev/sr0 /mnt/(这个要先创建)cdrom cd /mnt/cdrom ls -l简写 ll
卸载 umount /dev/sr0 要退出挂载点卸载,就像人不能坐在椅子上把椅子抬起来

用户和用户组命令
用户配置文件
用户信息文件: /etc/passwd 太多了 用帮助看懂 man 5 passwd 5是(文件passwd有目录和文件用此区分) ,看到的密码是加密的密文
第一字段:用户名称 vim /etc/passwd x标识标识有密码:用户UID,ID号标识:
第二字段:密码标识 可以把用户UID改成0得到root权限
第三字段:UID(用户ID) 0:超级用户 1-499 系统用户 (伪用户) 500-65535 普通用户
第四字段:GID(y用户初始组ID)
第五字段:用户说明
第六字段:家目录
第七字段:登陆之后的Shell 普通用户: /home/用户名/ 超级用户: /root/ Shell是Linux的命令解释器 nologin禁止登录
初始组:用户一登录就拥有这个用户组的相关权限,初始组名一般和用户名相同 附加组:指用户可以加入多个其他的用户组

影子文件: /etc/shadow 权限默认 000
第一字段: 用户名 第二字段 :加密密码 !!或 * 代表没有密码,不能登录 第三字段:密码最后一次修改日期 1970年1月1日 后的时间戳(每过一天时间加一)
第四字段 :两次密码的修改间隔时间(天数) 第五字段:密码有效期(和第三字段相比) 第六字段:密码修改到期前的警告天数,这段时间每天都提示要改密码(和第五字段比)
第七字段 :密码(到期后)过期天数的宽限时间,如为5,90过期,95天内还可以更改密码 第八字段 :账号失效时间(时间戳),可复制公式换算成日期 第九字段 :保留将来使用

组信息文件: /etc/group
第一字段: 组名 第二字段:组密码标识 (是否有密码) ,查看真正的组密码 /etc/gshadow
第三字段:组管理员用户名(GID)加入组其实就是改GID 第四字段: 组中附加用户( 看不到初始组,初始组只能通过GID标识,查询)

用户管理相关文件:
1.用户的家目录:
普通用户 : /home/用户名/ 所有者和所属组都是此用户 权限700
超级用户 : /root/ 普通用户变超级用户改变用户标识符为0,重新登录 变# ,处在的家目录不变
2.用户的邮箱: /var/spook/mail/ 默认创建
3.用户的模板目录:/etc/skel/ 每个用户创建是都产生先写好的模板,如请遵守浏览器规则

用户管理命令:
useradd 选项 【用户名】 选项有: -u 手工指定用户的UID,如改幸运数字 -d 家目录 -c 用户说明 -g组名 手工指定用户的初始组 -G 组名 指定用户加入附加组
-s Shell 手工指定用户登录Shell 默认是/bin/bash
用户默认值文件 : /etc/default/useradd GROUP = 100 默认组 HOME =/home 默认创建在此目录 INACTIVE = -1 密码过期后宽限天数 EXPIRE= 密码失效时间
/etc/login.defs PASS_MAX_DAYS 密码有效期 PASS_MIN_DAYS 密码必须要重新修改的时间间隔 PASS_WARN_AGE 7 密码到期警告
UID_MIN 最小和最大 的UID范围 GID_MAX ENCRYPT_METHOD SHA512 加密模式
passwd 选项【用户名】 ,只输入 passwd 可直接对当前用户
-S 用户名 查看密码状态,对应shadow文件字段
-l 用户名 锁定用户无法登陆,改成!! -u 解锁用户 删! 使用字符串作为用户的密码 echo “123” |passwd --stdin 用户名,如学习通分配100个账号初始密码
usermod 选项【用户名】 修改已经存在的用户信息 ,选项类似useradd
-u 手工指定用户的UID,如改幸运数字 -c 修改用户说明 -G 组名 修改用的附加组 -U 解锁用户(Unlock) -L 临时锁定用户 (Lock)
usermod -c “test user”(修改用户说明) lamp(用户名)
chage 选项 【用户名】 修改用户密码状态 -l :详细-d :最后一次修改密码的日期(第3字段) -m 两次密码(必须)修改的时间间隔 (4字段) -M : 密码有效期天数(5字段)
-W 密码过期警告时间天数 (6字段) -I(大写i) 过期后宽限时间天数 (7字段) -E 账号失效时间 (8字段)(对应shadow字段)
// chage -d 0 用户名 ==刚开始就把修改日期归零,一登录就要修改密码
userdel 选项[-r删除用户的同时删除家目录,一般都加-r] 【用户名】
等效删除有关改用户的所有信息文件行(查看vim shadow和 时删除 rm -rf /home/lamp(用户名)/ 和/var/spool/mail/lamp ) wq! 强制保存
重新创建lamp时没报错,证明等效
su 选项【用户名】 切换用户命令 su - root 减号不能漏 exit退出
不切换成root使用root可用的命令,如su -root -c“useradd user3” 在user1也可添加user3 ,要输入root密码 提示符不变$,可用root的一些命令,而不是切换为root

用户组管理命令:
groupadd [选项] 【组名】 【用户】 -g GID 修改组ID -n 新组名 修改组名,改名要改很多文件,否则易错认不清
groupdel [选项] 【组名】 group -g tg lamp(初始组对应用户名,先删除这个用户userdel -r lamp才可以删除初始组) tg(创建的组名) -g(初始组) -G (附加组)
gpasswd [选项] 用户名 【组名】(操作对象是组,要把组放最后) ,也可以直接改对应操作的文件添加用户组,(用什么文件能看到更改信息,就改哪个文件)

ACL权限:
ACL简介与开启 : ACL作用例子:初始权限每个用户 770(自己可以,学生可以,其他人不行) ,来了一个试听学员时,把用户单独拿过来
查看是否可以支持ACL权限 ,是否开启 dumpe2fs -h /dev/sda5
vi / etc/fstab 永久启动ACL权限 文件更改 defaults,acl 小心更改,如光盘不一定有不能改入启动项
mount -o remount/ (改完后重新挂载文件系统或重新启动使其生效 )

查看与设定ACL权限 :setfacl 选项 【文件名】 -m 设定ACL权限 -x 删除指定的ACL权限 -b 删除所有的ACL权限
-d 设定默认ACL权限 -k 删除默认的ACL权限 -R 递归设定ACL权限

例子:setfacl -m (g组或u用户) u:st(试听用户):rx(单独给其权限) /project/ (添加到此目录) 即 setfacl -m u:用户名:权限
最大有效权限(mask)和删除ACL权限 与mask(初始为rwx)相与的权限才是得到的权限 ,更改mask如改为r_x,就算给了rwx,新建的也只能得到r_x权限
setfacl -m m:rx /project/修改最大有效权限,mask被改为 r_x
setfacl -x (g/u): 用户名/组名 【文件名】 setfacl -x g:group1 /project/ setfacl -b /project/ 删除目录下全部文件权限
默认ACL权限和递归ACL权限
递归ACL权限: 给父目录权限,所有子文件和子目录也会拥有相同的ACL权限 setfacl -m u: 用户名:权限 -R(R只在这,表示递归) 文件名
之后创建的新文件收不到之前已经规定的通知,这时用户默认ACL
默认ACl :让父目录中新建的所有子文件都会继承父目录的ACL权限 setfacl -m d:u: 用户名:权限 文件名

文件特殊权限: 可让普通用户设密码,危险少用
SetUID 使用条件:SUID只有可执行的二进制程序才能设置SUID;且命令执行者要对改程序拥有x(执行)权限;
命令执行者在执行改程序时获得改程序文件属主(所有者)身份(执行程序的过程中灵魂附体为文件的属主(所有者));
SetUID权限 只在改程序执行过程中有效,也就是说身份改变只在程序执行过程中有效 rwxsr-xr-x 所有者的s就是SetUID权限
披着超级用户的外衣,可以对shadow文件有rwx权限,不受限制 ,4代表SUID 如命令chmod 4755 【文件名】 或 chmod u+s【文件名】
文件变红色:权限过高,不要改/usr/bin/vim为root权限,很危险 去除SUID :chmod 755【文件名】 或 chmod u-s【文件名】
定时检查有SUID权限的文件

SGID(可对文件(/bin/二进制程序)也可对目录)
SetGID针对文件的作用 只有可执行的二进制程序才能设置,且命令执行者要对改程序拥有x(执行)权限。
命令执行在执行程序时,组身份升级成该程序文件的属组。
SetGID同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效 rwxr-xsr-x SGID就是把组的权限加s
例子:
SetGID针对目录的作用 普通用户要对此目录拥有r和x权限,才能进入此目录 2代表GUID
普通用户在此目录中的有效组会变成此目录的属组
若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组 chmod 2755 【目录】 或 chmod g+s【目录】,

Sticky BIT (目前只对目录有效)粘着位作用 :普通用户对此目录拥有w和x权限,即普通用户可以获得对此目录拥有写权限
SBIT 1 但写chmod 7775没作用,(有的是作用于文件有的是目录,不同对象) 1777
没有用SBIT时普通用户有w权限可以删除此目录下所有文件(包括其他用户文件), 设置SBIT chmod 1777 【目录名】或 chmod o+t 【目录名】
赋予了SBIT之后,除了root可以删除所有文件,普通用户尽管有w,但不能删除其他用户文件 删除SBIT chmod 777 【目录名】或 chmod o-t 【目录名】

文件系统属性:chattr权限 //防误操作
chattr [±=] [选项]【文件或目录名】 +i 【文件或目录】 不允许对i文件进行增删改,目录则只能修改文件的数据,不允许创建和删除文件
可直接±= +a 【文件或目录】 只能对文件增加数据,目录只允许建立和修改文件,不允许删除文件
//不能用vim修改数据,无法判断是删还是增,所以直接限制,可用echo 555 >>文件 增加数据555
lsattr 选项 【文件名】 -a 显示所有文件和目录 -d 若目标是目录,仅列出目录本身的属性,而不是子文件的

sudo权限 root把本来只能超级用户执行的命令赋予普通用户执行 操作对象是系统命令
visudo 实际修改的是 /etc/sudoers
root或% ALL =(ALL) ALL 允许某个命令能在某个网段都能执行
用户名/组名 被管理的主机的地址=(可使用身份) 授权命令(绝对路径)
例子 : sc ALL=/sbin/shutdown -r now 授权用户sc可以重启服务器 普通用户 先切换su - sc 再执行命令sudo /sur/bin/vim 文件名 (很危险可执行所有操作在使用vim时)

回顾文件系统和分区 主分区最多4个,扩展分区(也算主分区的一种)扩展分区加主分区最多4个,扩展分区必须再分成逻辑分区才能使用,IDE硬盘在Linux中最多支持59个逻辑分区,SCSI硬盘最多支持11个逻辑分区
分区号 1234只给主分区(包括扩展分区也可使用,一个扩展分区算一个标号) 逻辑分区从5开始标号 文件系统ext4 较先进

文件系统常用命令
df [选项]【挂载点】-a 显示所有文件系统信息 -h单位换算 -T显示文件系统类型 -m 以MB为单位显示容量 -k 以KB为单位显示容量。默认就是以KB为单位
du 目录名 -a 显示每个子文件的磁盘占用量 -h -s统计总占用量 ,而不列出子文件和子目录的占用量
// df是从文件系统考虑,还会加上命令和程序,显示占用更多,du只计算文件或目录占用的空间 fsck -a -y 自动修复 ,系统一般启动会使用,一般不使用此命令
挂载命令 (挂载后才能使用,设备与挂载点盘符(目录)连接起来的过程,Linux需要手工配置)
1.查询与自动挂载
mount 查看挂载的设备 -l 会显示卷标名称 -a 按照配置文件 /etc/fstab 的要求自动挂载
2.挂载命令格式
mount [-t 文件系统] [-L 卷标名] [-o可以指定挂载的额外选项](选项都不写可以,就都用默认) 【设备文件名】 【挂载点目录】 //参数太多,针对的不是分区,无特殊情况尽量不使用//
例子: mount -o rmount,noexec /home 重新挂载分区/boot分区 ,并使用noexec权限
改完什么就不可执行(具体看视频例子) 要记得改回来,否则影响系统启动mount -o rmount, /home 改回就可执行什么
挂载光盘与U盘
具体看视频,要练习虚拟机
挂载光盘 建立挂载点(准备一个空目录)mkdir/mnt/cdrom, 挂载光盘 :mount (-t iso9660) /dev/cdrom /mnt/cdrom/
mount /dev/cdrom/sr0 /mnt/cdrom备文件名或挂载点
卸载命令umount 【设备文件名或挂载点】(不能写两个,否则卸载两次)(不能在设备中卸载设备) umount dev/sr0

挂载U盘
fdisk -l 查看U盘设备文件名
mount -t vfat(U盘32) /dev/sdbl (可用查看去找设备名)/mnt/usb/ Linux 默认不支持NTFS文件系统
拔出U盘 umount /dev/sdbl

支持NTFS文件系统 //不用手动驱动 ,内核编译用的少
下载NTFS-3G插件 http://www.tuxera.com/community/ntfs-3g-download/ 安装过程懵逼
使用 mount -t ntfs-3g dev/sdbl(设备名)/mnt/usb/(挂载点) (鼠标点进去否则是windows识别)

fdisk分区
fdisk命令分区过程 : 添加新硬盘(VMware) 查看新硬盘 fdisk -l 使用命令分区 fdisk /dev/sdb (此处无数字,分区之后才有)
fdisk交互指令记常用的 d删除,w保存退出 ,l显示,t改变一个分区系统的ID ,q不保存退出 …
此处有展示一些挂载划分逻辑分区!!!!多看几遍61集 ,分区号1234主分区/扩展,5之后逻辑分区在扩展分区中 ,分区 +2G 起始到终止空间编号 ,大小
分区自动挂载与fstab文件修复 (每次挂载用完都要卸载,一旦重启都要重新挂载麻烦)
/etc/fstab文件 (学习如何修改) (注意乱改直接影响启动)
第一字段 分区设备文件名或UUID(更可靠)(分区不删除,不格式化就不会改变)第二字段 挂载点 第三字段 文件系统名称 第四字段 挂载参数
第五字段 指定备份是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
第六字段 指定分区是否被fsck检测,0代表不检测,其他数字代表检测优先级 1比2高 其他文件优先级不能比根目录高
能够操作四个分区有UUID,其他有的是临时文件
mount -a 自动挂载 写完远程登录试一下是否写错
若写完后报错,可文件修复 mount -o remount,rw/ 改为可写的,就不会报错,(仅仅在再此文件/etc/fstab有报错时可修复)

总结

写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于 java开发 的学习思路及方向。从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。

由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的 点击我的Gitee获取。
还有 高级java全套视频教程 java进阶架构师 视频+资料+代码+面试题!

全方面的java进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。

你可能感兴趣的:(java,后端,linux,学习,运维)