Linux概念扫盲
# 常见命令
查看端口使用情况,使用netstat命令。
如果要查看已经连接的服务端口(ESTABLISHED) netstat -a
如果是查看所有的服务端口(LISTEN,ESTABLISHED) netstat -ap
查看8080端口,则可以结合grep命令: netstat -ap | grep 8080
若要停止使用这个端口的程序,使用kill +对应的pid即可 kill pid
# Ubuntu查看Mac地址
sudo lshw -c network | grep serial
# Linux文件权限
在Linux中,使用如下命令查看文件的基本属性和文件所属的用户和组
root:/system $ ls -l
total 208
drwxr-xr-x 78 root root 4096 2018-12-06 10:30 app
drwxr-xr-x 3 root shell 8192 2018-12-06 10:43 bin
-rw-r--r-- 1 root root 9115 2018-12-07 01:40 build.prop
-rw-r--r-- 1 root root 9008 2018-12-06 11:03 build.prop.bakforspec
drwxr-xr-x 19 root root 4096 2018-12-07 01:40 etc
drwxr-xr-x 2 root root 4096 2018-12-06 10:44 fake-libs
drwxr-xr-x 2 root root 4096 2018-12-06 10:44 fake-libs64
drwxr-xr-x 2 root root 4096 2018-12-06 10:44 fonts
drwxr-xr-x 5 root root 4096 2018-12-06 11:10 framework
drwxr-xr-x 7 root root 8192 2018-12-06 11:10 lib
drwxr-xr-x 6 root root 8192 2018-12-06 11:10 lib64
drwx------ 2 root root 4096 1970-01-01 00:00 lost+found
drwxr-xr-x 3 root root 4096 2018-12-07 01:40 media
drwxr-xr-x 57 root root 4096 2018-12-06 11:03 priv-app
drwxr-xr-x 5 root root 4096 2018-12-07 01:46 rfs
drwxr-xr-x 3 root root 4096 2018-12-06 11:10 tts
drwxr-xr-x 8 root root 4096 2018-12-06 11:10 usr
drwxr-xr-x 61 root shell 4096 2018-12-07 01:46 vendor
drwxr-xr-x 2 root shell 4096 2018-12-06 11:10 xbin
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
每个文件的名称都由最后一行的字段确定,而每个文件的属性由该行的第一个十位长度的字段确定,如下abcdefghij
drwxr-xr-x | 78 | root | root | 4096 | 2018-12-06 10:30 | app |
---|---|---|---|---|---|---|
abcdefghij | x | x | x | x | x | x |
其中第一列的十位,如上abcdefghij是表明该文件的属性,如文件类型、属主权限、属组权限、其他用户权限,如下表
a | bcd | efg | hij |
---|---|---|---|
文件类型 | 属主权限(rwx) | 属组权限(rwx) | 其他用户权限(rwx) |
文件类型
- d:目录
- -:文件
- l:连接文档(Link file)
- b:装置文件里面可供存储的接口设备(可随机存取装置)
- c:为装置文件里面的串行端口设备,如键盘、鼠标(一次性读取装置)
rwx组合
- r:可读(Read)
- w:可写(write)
- x:可执行(execute)
- 该三个位置不会变,如果没有权限就会出现 - 号
Linux文件系统
- 对于文件来说,他都有一个特定的所有者,也就是对该文件具有所有权的用户
- 在Linux中,用户是按组分类的,一个用户属于一个或多个组
- 文件所有者以外的用户又分为文件所有者的{% em %}同组用户{% endem %}和{% em %}其他用户{% endem %}
- Linux文件系统按{% em %}文件所有者{% endem %}、{% em %}文件所有者同组用户{% endem %}、{% em %}其他用户{% endem %} 规定了不同的文件访问权限
属主权限(该文件所有者)
属组权限(所有者的同组用户)
其他用户权限
如上表中可以描述成,app是个目录文件,属主和属组都是root,属主具有rwx,即可读、可写、可执行;属组具有r-x,即可读、不可写、可执行;其他用户具有r-x,即可读、不可写、可执行
# 更改文件属性
# 更改文件属组
chgrp [-R] 属组名 文件名 //changer group====chgrp usage: chgrp/chown [-RHLP] [-fvh] group file... Change group of one or more files. -f suppress most error messages. 不显示各种错误信息 -h change symlinks instead of what they point to 更改符号链接,而不是它们指向的内容 -R recurse into subdirectories (implies -h). -R 递归更改文件属性,常用于批量更改文件夹 -H with -R change target of symlink, follow command line symlinks -L with -R change target of symlink, follow all symlinks -P with -R change symlink, do not follow symlinks (default) -v verbose output. 详细输出。 chgrp: Need 2 arguments
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 更改文件属主,也可同时更改文件属组
chown [-R] 属主名 文件名 chown [-R] 属主名:属组名 文件名 //change owner === chown usage: chgrp/chown [-RHLP] [-fvh] group file... Change group of one or more files. -f suppress most error messages. -h change symlinks instead of what they point to -R recurse into subdirectories (implies -h). -H with -R change target of symlink, follow command line symlinks -L with -R change target of symlink, follow all symlinks -P with -R change symlink, do not follow symlinks (default) -v verbose output. chown: Need 2 arguments
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 更改文件的9个属性
usage: chmod [-R] MODE FILE...
9个属性:属主(owner)、属组(group、owner所在的group)、其他用户(others)的各自rwx权限
Linux设置文件属性有两种方法
# 数字
各个权限分数:r=4,w=2,x=1
如上方app的属性drwxr-xr-x
owner=r+w+x=4+2+1=7
group=r-x=4+0+1=5
others=r-x=4+0+1=5
指令为
chmod [-R] 755 文件或目录
//-R 对文件夹起作用,递归所有文件
2
# 符号
九个属性分别归属于如下三个身份,简称u、g、o,a代表all,全部身份
- user
- group
- others
如上方app的属性drwxr-xr-x
u=rwx
g=r-x
o=r-x
指令如下
chmod [-R] u=rwx,g=r-x,o=r-x 文件名[文件目录]
若要修改为dr-xrwxr-x,则指令为
chmod [-R] u-w,g+w 文件名[文件目录]
# Linux命令大全
# 程序和进程
程序和进程
- 1、程序:程序是静止的,程序就是磁盘上的一个文件。
- 2、进程:进程是一个正在执行的程序的实例。
- 3、进程是动态的。
- 4、一旦程序被操作系统加载进内存了,那么这程序就成为了进程。
PID和PPID
1、PID(process ID):
PID是程序被操作系统加载到内存成为进程后动态分配的资源。
每次程序执行的时候,操作系统都会重新加载,PID在每次加载的时候都是不同的。
2、PPID(parent process ID):PPID是程序的父进程号。
3、PID和PPID都是非零的整数。
4、PID是唯一的,一个PID只标识一个进程。
5、一个进程创建的另一个新进程称为子进程。相反地,创建子进程的进程称为父进程。
6、对于一个普通的用户进程,它的父进程就是执行它的哪个Shell,对于Linux而言,Shell就是bash。
7、bash所在的目录:[negivup@localhost bin]$ cd /bin | ls bash
提示
1、所有进程追溯其祖先最终都会落到进程号为1的进程身上,这个进程叫init进程
2、init进程是linux内核启动后第一个执行的进程。
3、init引导系统,启动守护进程并且运行必要的程序。
# fork
提示
一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。
fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
1)在父进程中,fork返回新创建子进程的进程ID;
2)在子进程中,fork返回0;
3)如果出现错误,fork返回一个负值;
在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。我们可以通过fork返回的值来判断当前进程是子进程还是父进程。
引用一位网友的话来解释fpid的值为什么在父子进程中不同。其实就相当于链表,进程形成了链表,父进程的fpid(p 意味point)指向子进程的进程id,因为子进程没有子进程,所以其fpid为0。