Linux 入门
文件管理
1.文件类型
Unix/Linux对数据文件(.mp3、.bmp),程序文件(.c、.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。 Linux下一切皆文件。
在Unix/Linux操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在Unix/Linux系统中文件可以没有扩展名。
通常,Unix/Linux系统中常用的文件类型有7种:普通文件、目录文件、设备文件、管道文件、链接文件和套接字。
(1)普通文件(-)
普通文件是计算机操作系统用于存放数据、程序等信息的文件,一般都长期存放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。
在Unix/Linux中可以通过file命令来查看文件的类型。如果file文件后面携带文件名,则查看指定文件的类型,如果携带通配符“*”,则可以查看当前目录下的所有文件的类型。
(2)目录文件(d)
Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。
目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。
每个目录文件至少包括两个条目,“…”表示上一级目录,“.”表示该目录本身。
(3)设备文件(b(块设备文件)/c(字符设备文件))
Unix/Linux系统把每个设备都映射成一个文件,这就是设备文件。它是用于向I/O设备提供连接的一种文件,分为字符设备和块设备文件。
字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp,第一个软盘驱动器对应/dev/fd0。
deng@itcast:~/share$ echo “hello world” > /dev/pts/22 hello world
(4)管道文件(p)
管道文件也是Unix/Linux中较特殊的文件类型,这类文件多用于进程间的通信。
(5)链接文件(I)
似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。
示例:
普通文件
deng@itcast:~/test$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2372 3月 21 22:48 /etc/passwd
目录文件
deng@itcast:~/test$ ls -ld /etc
drwxr-xr-x 134 root root 12288 5月 28 11:28 /etc
字符设备
deng@itcast:~/test$ ls -l /dev/input/mouse0
crw-rw---- 1 root input 13, 32 5月 26 17:01 /dev/input/mouse0
块设备
deng@itcast:~/test$ ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 5月 26 17:01 /dev/sda1
创建一个管道文件
deng@itcast:~/test$ mkfifo fifo
deng@itcast:~/test$ ls -l fifo
prw-rw-r-- 1 deng deng 0 5月 28 11:59 fifo
符号链接
deng@itcast:~/test$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 11月 17 2017 /bin/sh -> dash
deng@itcast:~/test$
套接字文件
deng@itcast:~/tmp/test$ ls -l /run/systemd/notify
srwxrwxrwx 1 root root 0 8月 8 11:00 /run/systemd/notify
文件权限(chmod)
Linux系统中不仅是对用户与组根据UID,GID进行了管理,还对Linux系统中的文件,按照用户与组进行分类,针对不同的群体进行了权限管理,用他来确定谁能通过何种方式对文件和目录进行访问和操作。
文件的权限针对三类对象进行定义
owner 属主,缩写u
group 属组,缩写g
other 其他,缩写o
每个文件针对每类访问者定义了三种主要权限
r:Read 读
w:Write 写
x:eXecute 执行
另 X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)
注意:root账户不受文件权限的读写限制,执行权限受限制
对于文件和目录来说,r,w,x有着不同的作用和含义:
针对文件:
r:读取文件内容
w:修改文件内容
x:执行权限对除二进制程序以外的文件没什么意义
针对目录:目录本质可看做是存放文件列表、节点号等内容的文件
r:查看目录下的文件列表
w:删除和创建目录下的文件
x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)
用户获取文件权限的顺序: 先看是否为所有者,如果是,则后面权限不看;再看是否为所属组,如果是,则后面权限不看。
修改文件权限的方法
chmod 修改权限 change mode
方法1:mode法
格式:chmod who opt per file
who:u g o a(all)
opt:+ – =
per:r w x X
方法2:数字法
格式:chmod XXX file
rwx rw- r–
111 110 100
7 6 4
r:4
w:2
x:1
例:chmod 764 file 给file文件添加 rwxrw-r– 权限
chmod -R +X dir 给dir目录添加X执行权限,dir目录下文件不添加执行权限
(如果dir目录下有文件已具备执行权限,则添加该文件执行权限)
注意:只有文件所属者或者sudo或者root用户,才有权力更改文件权限
修改文件所属组chgrp
chgrp [-R] groupname filename
# -R 可选 递归修改filename下所有文件的所属组
不使用 -R
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root root 4096 Jun 15 20:56 etc
[root@node1 muzihua]# chgrp muzihua etc/
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root muzihua 4096 Jun 15 20:56 etc
[root@node1 muzihua]# ll etc/|head -n 5
total 1176
-rw-r--r-- 1 root root 44 Jun 15 20:56 adjtime
-rw-r--r-- 1 root root 1512 Jun 15 20:56 aliases
-rw-r--r-- 1 root root 12288 Jun 15 20:56 aliases.db
drwxr-xr-x 2 root root 4096 Jun 15 20:56 alternatives
使用 -R
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root root 4096 Jun 15 20:56 etc
[root@node1 muzihua]# chgrp -R muzihua etc/
[root@node1 muzihua]# ll etc/|head -n 5
total 1176
-rw-r--r-- 1 root muzihua 44 Jun 15 20:56 adjtime
-rw-r--r-- 1 root muzihua 1512 Jun 15 20:56 aliases
-rw-r--r-- 1 root muzihua 12288 Jun 15 20:56 aliases.db
drwxr-xr-x 2 root muzihua 4096 Jun 15 20:56 alternatives
chown修改文件所属用户及所属组
chown既可以修改文件的所属用户,也可以修改文件的所属组,chown熟练使用后,便可以代替chgrp对文件进行所属组的修改。
chown [-R] ownname:groupname filename
只修改文件所属用户(不使用-R)
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root root 4096 Jun 15 20:56 etc
[root@node1 muzihua]# chown muzihua etc/
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 muzihua root 4096 Jun 15 20:56 etc
[root@node1 muzihua]# ll etc/|head -n 5
total 1176
-rw-r--r-- 1 root root 44 Jun 15 20:56 adjtime
-rw-r--r-- 1 root root 1512 Jun 15 20:56 aliases
-rw-r--r-- 1 root root 12288 Jun 15 20:56 aliases.db
drwxr-xr-x 2 root root 4096 Jun 15 20:56 alternatives
只修改文件所属用户(使用-R)
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root root 4096 Jun 15 20:56 etc
[root@node1 muzihua]# chown -R muzihua etc/
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 muzihua root 4096 Jun 15 20:56 etc
[root@node1 muzihua]# ll etc/|head -n 5
total 1176
-rw-r--r-- 1 muzihua root 44 Jun 15 20:56 adjtime
-rw-r--r-- 1 muzihua root 1512 Jun 15 20:56 aliases
-rw-r--r-- 1 muzihua root 12288 Jun 15 20:56 aliases.db
drwxr-xr-x 2 muzihua root 4096 Jun 15 20:56 alternatives
只修改文件所属组(不使用-R)
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root root 4096 Jun 15 20:56 etc
[root@node1 muzihua]# chown :muzihua etc/
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root muzihua 4096 Jun 15 20:56 etc
[root@node1 muzihua]# ll etc/|head -n 5
total 1176
-rw-r--r-- 1 root root 44 Jun 15 20:56 adjtime
-rw-r--r-- 1 root root 1512 Jun 15 20:56 aliases
-rw-r--r-- 1 root root 12288 Jun 15 20:56 aliases.db
drwxr-xr-x 2 root root 4096 Jun 15 20:56 alternatives
只修改文件所属组(使用-R)
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root root 4096 Jun 15 20:56 etc
[root@node1 muzihua]# chown -R :muzihua etc/
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root muzihua 4096 Jun 15 20:56 etc
[root@node1 muzihua]# ll etc/|head -n 5
total 1176
-rw-r--r-- 1 root muzihua 44 Jun 15 20:56 adjtime
-rw-r--r-- 1 root muzihua 1512 Jun 15 20:56 aliases
-rw-r--r-- 1 root muzihua 12288 Jun 15 20:56 aliases.db
drwxr-xr-x 2 root muzihua 4096 Jun 15 20:56 alternatives
同时修改文件所属用户和所属组 (不使用 -R)
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root root 4096 Jun 15 20:56 etc
[root@node1 muzihua]# chown muzihua:muzihua etc/
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 muzihua muzihua 4096 Jun 15 20:56 etc
[root@node1 muzihua]# ll etc/|head -n 5
total 1176
-rw-r--r-- 1 root root 44 Jun 15 20:56 adjtime
-rw-r--r-- 1 root root 1512 Jun 15 20:56 aliases
-rw-r--r-- 1 root root 12288 Jun 15 20:56 aliases.db
drwxr-xr-x 2 root root 4096 Jun 15 20:56 alternatives
同时修改文件所属用户和所属组 (使用 -R)
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 root root 4096 Jun 15 20:56 etc
[root@node1 muzihua]# chown -R muzihua:muzihua etc/
[root@node1 muzihua]# ll
total 4
drwxr-xr-x 62 muzihua muzihua 4096 Jun 15 20:56 etc
[root@node1 muzihua]# ll etc/|head -n 5
total 1176
-rw-r--r-- 1 muzihua muzihua 44 Jun 15 20:56 adjtime
-rw-r--r-- 1 muzihua muzihua 1512 Jun 15 20:56 aliases
-rw-r--r-- 1 muzihua muzihua 12288 Jun 15 20:56 aliases.db
drwxr-xr-x 2 muzihua muzihua 4096 Jun 15 20:56 alternatives
网络设置
安装ifconfig
sudo apt install net-tools
ping
ping + ip,连接俩台电脑
Linux常用命令
关机和重启
shutdown -h now #立刻关机
shutdown -h 5 #5分钟后关机
poweroff #立刻关机
halt #立刻关机
-------------------------------------------------------------------------------------------------------------------------
shutdown -r now #立刻重启
shutdown -r 5 #5分钟后重启
reboot #立刻重启
注意:1.不管关闭还是重启,都应该先运行sync命令,把内存数据写入磁盘
2.who 一下看谁还在线,要不可能会让其他人也跟着关机
帮助命令 --help、man
命令 --help #查看简版用法
man 命令 #查看详细版用法
pwd查看当前绝对命令
pwd #显示当前绝对路径
查看进程ps
进程介绍
a.在Linux中每个执行程序的都称为一个进程,每一个进程都分配一个ID号(PID)
b.每一个进程都会对应一个父进程,而这个父进程会有很多个子进程
c.每个进程都有两种存在方式(前台或后台)
d.一般系统服务都是以后台形式存在,都会常驻到系统中,直到关机才结束
ps #显示当前进程状态
ps -A #显示所有进程
ps -au #以用户的形式显示进程信息
ps -aux #显示所有进程信息(较详细)
查看进程树
pstree #可以以树的形式查看进程信息
pstree -p #显示进程的PID
pstree -u #显示进程的所属用户
(也可以-p -u一起用)
more命令
Linux more命令类似于cat,不过会以一页一页的形式显示,更方便使用者逐页阅读用空格下一页,b为上一页
more -s testfile #逐页显示testfile的内容
more +20 testfile #从20行开始显示文件内容
grep命令
grep "printf" 1.c #查找文件中printf的字符串
grep -c "printf" 1.c #查找printf出现的次数
| 是管道,我们可以用| + grep 内容来检索我们想要的内容
结束进程kill
kill 25546 #正常方式中止进程25546(进程号)
kill -9 25546 #直接杀死进程25546
kill -KILL 25546 #直接杀死进程25546
kill -15 25546 #释放资源后,杀死25546
ifconfig查看网卡信息
#显示网络设备信息
ifconfig
...
需要sudo权限
#关闭eth0网卡
ifconfig eth0 down
#开启eth0网卡
ifconfig eth0 up
...
#给eth0网卡配置IP地址,加上掩码,加上个广播地址192.168.1.255
ifconfig eth0 192.168.1.202 netmask 255.255.255.0 broadcast 192.168.1.255
动态监控进程top
top和ps类似,但是top它会实时更新,动态监测进程
top -d #每隔几秒更新,默认3s
top -i #不显示闲置或者僵死的进程
top -p #指定监控的进程ID,仅监控某个进程的状态
目录操作命令
切换目录 cd
cd /home/ddd #绝对路径,切换到ddd目录
cd ../ #回到上级目录
cd .. #回到上级目录
cd ../.. #回到上上级目录
cd ./ #在当前目录下
cd / #进入根目录
cd ~ #进入当前用户下的家目录
cd - #返回上一个目录
查看目录 ls
ls #查看当前目录下所有文件
ls -a # 查看所有文件(包括隐藏文件)
ls -l #按名称、列表查看当前目录下目录和文件的详细信息
ls -al #按名称、列表查看当前目录下所有目录和文件的详细信息
ls -lst #按时间顺序查看
ls -lrt #按时间倒序查看
创建目录 mkdir
mkdir aaa #创建aaa文件夹
mkdir aaa/bbb #在aaa里创建bbb(aaa必须存在)
mkdir -p aaa/bbb #在aaa里创建bbb(aaa不存在则自动创建)
删除目录 rmdir
rmdir aaa #删除aaa空目录
rmdir -p aaa/bbb/ccc #删除当前目录下的空aaa/bbb/ccc
rm -rf aaa/bbb/ccc #递归删除
rm -fr ./* #删除当前目录下的所有文件及目录
拷贝目录 cp
cp -r bbb ccc #递归将bbb目录及里面的内容复制到ccc目录下
cp -r -p aa bb #保持文件属性(时间戳)递归把aa目录复制到bb目录下
修改目录 mv
mv aaa ccc #将目录aaa改名为ccc
mv ccc/bbb . #将ccc下的bbb目录剪切到当前目录下
历史命令 history
history
history + 10 #显示最新的10条命令
命令路径查询which
which 命令 #查询命令的路径
whitis
whitis 命令 #打印该命令的单行说明
wc
wc 文件名 #打印文本文件中的字数
ls -al | wc -l #统计ls -al命令的行数
wget
wget 是从互联网检索内容的实用工具,它拥有最大的flags之一
wget //http:www.baidu.com/index.html #从百度下载文件