Linux笔记
文件目录
- 创建目录
mkdir -p /test/cxk
-p 可以创建多级目录
- 删除目录
rmdir +目录名
rm -rf +目录名
这种情况需要目录为空
- 创建文件
touch hello.txt
- 拷贝文件
cp [选项] source dest
cp -r test/ /tmp
-r 表示递归,可以把整个目录拷贝
- 移动并重新命名文 件目录
mv cxk.cpp /tmp
- cat查看内容
cat /etc/profile -n
-n 表示显示行号
- more和less查看内容
less/more +文件
- echo输出内容到控制台
echo $PATH
- 软连接:ln -s 相当于快捷方式
ln -s /tmp ~/test/tmp
重定向:
两个>> 追加
一个> 覆盖
echo "hello" > cxk.txt
- history
查看历史命令
使用!+编号
可以执行
- 查看目录大小
du -sh /path/to/directory
用户管理
- 添加用户
sudo useradd -d /home/zhangsan -m zhangsan
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- 删除用户
sudo userdel -r zhangsan
-r,它的作用是把用户的主目录一起删除。
- 修改用户
sudo usermod -u 1004 zhangsan
- 添加口令(密码)
sudo passwd zhangsan
- 查看用户的uid
id zhangsan
用户组管理
- 添加新的用户组
groupadd group1
新组的组标识号是在当前已有的最大组标识号的基础上加1。
- 删除组
groupdel group1
- 修改组
sudo groupmod -n group2 group1
修改组group1名字为group2
与用户有关的重要系统文件
- /etc/passwd
cat /etc/passwd
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
- /etc/group
组名:口令:组标识号:组内用户列表
查找指令
查找find
- 查找/home目录下的hello.txt文件
find /home -name hello.txt
- 查找/opt目录下,用户名称为hyf21200107230的文件
find /opt -user hyf21200107230
- 查找所有大于200M的文件(+n 大于 -n 小于 n等于)
find / -size +200M
locate 指令
第一次运行,需要先执行
updatedb
locate test.c
which
可以查看某个指令在哪个目录下面
which ls
grep指令和管道符号|
grep [选项] 查找内容 查找文件 -n 显示行号 -i 忽略大小写
cat cxk.txt | grep "yes" -n
grep "yes" -n cxk.txt # 两种都可以
压缩解压
压缩gzip:
gzip cxk.txt
解压gunzip:
gunzip cxk.txt.gz
压缩:zip
将/home/文件夹 压缩为myhome.zip
zip -r myhome.zip /home/
解压:
将myhome.zip 解压到/opt/tmp
unzip -d /opt/tmp myhome.zip
tar 指令
tar [option] xxx.tar.gz 打包的内容 -c 打包 -x 解压 zvf 其他选项
压缩
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
解压
tar -zxvf pc.tar.gz
权限管理
查看文件的所有者ls
两个人物,第一个是文件的所有者,第二个是所属于的组
ls -ahl
修改文件所有者chown
chown 用户名 文件名
chown tom abc.txt
递归,将test目录下所有文件目录所有者都修改为tom
chown -R tom /home/test
将用户加入组useradd
groupadd monster
useradd -g monster fox
id fox
修改文件所在组chgrp
chgrp 组名 文件名
groupadd fruit
touch orange.txt
ls -alh
charp fruit orange.txt
ls -alh
改变用户所在组usermod
usermod -g 新组名 usermod -g 目录名 用户名 初始目录
将wzj修改到wudang组
usermod -g wudang wzj
ll显示内容如下:
[root@iZbp12g6txzqa6hwiabh5mZ fox]# ll
总用量 0
-rw-r--r-- 1 fox monster 0 10月 4 12:48 ok.txt
-rw-r--r-- 1 root fruit 0 10月 4 12:53 orange.txt
第0为文件类型
- d 表示目录
- l 表示符号链接
- c 表示字符设备文件(鼠标,键盘)
- b 表示块设备文件
- s 表示套接字文件
- p 表示管道文件
1-3为所有者的权限
4-6为所属组的权限
7-9为其他用户权限
- r 表示读取权限
- w 表示写入权限
- x 表示执行权限
- 表示没有对应权限
接下来的1
代表子目录数量fox
代表用户monster
代表组0
代表大小10月 4 12:48
代表时间ok.txt
代表文件名
修改权限chmod
- 使用:+,-,=变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u,g,o)
给abc的所有者读写执行权限,所在组读执行权限,其他组读执行权限
chmod u=rwx,g=rx,o=rx abc
给abc的所有者除去执行权限,增加组写的权限
chmod u-x,g+w abc
给abc的所有用户添加读权限
chmod a+r abc
- 通过数字变更权限(1-7)
r=4 w=2 x=1 rwx=4+2+1=7 例如:
chmod u=rwx,g=rx,o=x abc
相当于chmod 751 abc
将abc
读权限改为rwxr-xr-x
chmod 755 abc
实践
警察和土匪游戏
# 创建组
groupadd police
groupadd bandit
#创建用户
useradd -g police jack
useradd -g police jerry
useradd -g bandit xh
useradd -g bandit xq
# 3. jack创建文件
su jack
vim jack.txt
chmod 640 jack.txt
# 4. 修改
chmod 644 jack.txt
chmod o=r,g=r jack.txt
# 5. 投靠
su root
usermod -g police xh
su xh
cd /home/jack # 进不去,需要先给目录权限
su root
chmod 770 /home/jack
su xh
cd /home/jack
ll # 此时用户有读权限,但是不可以写,需要切换jack进行授权
su jack
cd /home/jack
chmod g+w
su xh # 此时可以进行读写
任务调度
定时任务设置crontab
crontab +选项
- -e : 执行文字编辑器来设定时程表
- -r : 删除目前的时程表
- -l : 列出目前的时程表
crontab -e
*/1 * * * * date >> /tmp/date.txt
时间符号意义:
符号 | 含义 |
---|---|
* | 任何时间 |
, | 不连续的时间 |
- | 范围 |
*/n | 多久 |
五个*
分别代表:
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
一次性定时任务at
需要保证atd
进程一直启动,每隔60s检测一次队列
ps -ef |grep atd
案例
两天后的下午五点执行/bin/ls /home
at 5pm +2 days
at> /bin/ls /home
然后需要按两次Ctrl+D
才可以退出
查看任务atq
明天17点,输出时间到/root/date100.log
at 5pm tomorrow
at> date > /toor/date100.log
删 除任务atrm+编号
atrm 1
磁盘管理
查看所有设备的挂载lsblk
lsblk -f
挂载案例
- 先给虚拟机添加一个硬盘
再使用lsblk
查看是否有硬盘加入
- 分区命令:
fdisk /dev/sdb
然后输入m可以查看帮助
输入n添加一个新分区,接下来的选项默认即可
最后需要输入w写入并退出
- 分区完成,接着需要格式化分区,指定分区的类型
ext4 是分区的类型
mkfs -t ext4 /dev/sdb1
- 挂载分区:
mount 设备名称 挂载目录
mkdir newdisk
mount /dev/sdb1 /newdisk/
如果想要卸载:umount 设备名称 或者挂载目录
!!!注意,用命令行挂载重启后会失效
- 永久挂载
编辑/etc/fstab
文件,
按已有的格式添加一个,可以使用UUID,也可以直接用/dev/sdb1
接着需要使用:
mount -a
立刻生效,此时重启后也会生效
磁盘情况查询df
- 查询系统整体磁盘使用情况
df -h
- 查询指定目录磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总 -h 带计量单位 -a 含文件 --max-depth=1 子目录深度 -c 列出明细的同时,增加汇总值
du -h
查询/opt
目录的磁盘占用情况,深度为1
du -hac --max-depth=1 /opt/