Linux 基础知识1
Linux基础知识 (1)
1. Linux Daemon 守护进程/精灵进程
Linux Daemon是运行在后台的一种特殊进程,它独立于控制终端,周期性的执行某些特殊的任务或者等待处理某些发生的事件;不需要用户输入就能运行且可以提供特定的服务,Linux系统上的大多数服务器就是通过守护进程实现;Linux下常见的守护进程有:
- 日志进程 syslogd
- web服务器进程 httpd
- 邮件服务器sendmail
- 数据库服务器mysqld
守护进程的进程名通常以d结尾;
守护进程的特点:
- 生存周期长,操作系统启动的时候启动,操作系统关闭的时候关闭
- 守护进程和控制终端无关联,控制终端退出时不影响其运行
- 在后台运行,不占用终端,可以在终端运行其他命令
- 一个守护进程的父进程是init进程,因为守护进程的父进程在fork出守护进程后,就先于守护进程退出了,所以Daemon是一个由init进程继承的孤儿进程
2. Linux 性能观察工具
2.1 System Libraries 系统库
2.1.1 ltrace命令
ltrace命令用来跟踪进程对系统库文件的调用情况,属于Linux内核内建命令
常用参数:
- -f 跟踪当前程序或者进程的子进程(当前进程fork或者clone出来的)
- -T 输出每个调用过程的时间开销
2.1.2 ptrace命令
2.2 系统库调用接口
2.2.1 strace命令
2.3 VFS 虚拟文件系统
2.3.1 lsof命令
2.3.2 fatrace命令
2.3.3 filelife命令
2.3.4 pcstat命令
3. Linux系统语言设置
3.1 locale命令
locale
命令用于在Linux上设置和查看程序运行的语言环境;locale会根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统定义一个软件运行时的语言环境。
local
命令输出:
locale
命令可查看当前系统上程序运行的语言环境;
LANG的优先级是最低的,它是所有LC_*变量的默认值;如果LC_*变量没有设置值,则其将LANG变量的值作为默认值;
LC_*各个变量的含义如下:
- LC_CTYPE:用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等,非常重要的一个变量。
- LC_NUMERIC:用于格式化非货币的数字显示
- LC_TIME:用于格式化时间和日期
- LC_COLLATE:用于比较和排序
- LC_MONETARY:用于格式化货币单位
- LC_MESSAGES:用于控制程序输出时所使用的语言,主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等
- LC_PAPER:默认纸张尺寸大小
- LC_NAME:姓名书写方式
- LC_ADDRESS:地址书写方式
- LC_TELEPHONE:电话号码书写方式
- LC_MEASUREMENT:度量衡表达方式
- LC_IDENTIFICATION:locale对自身包含信息的概述
LC_ALL:它不是环境变量,它是一个宏,可通过该变量的设置覆盖所有LC_*变量,这个变量设置之后,可以废除LC_*的设置值,使得这些变量的设置值与LC_ALL的值一致,注意LANG变量不受影响。
优先级:LC_ALL > LC_* > LANG
3.2 locale -a
命令
locale -a
命令用于查看当前系统中可用的locale
locale -a | grep "zh_CN.*"
local -a -v
命令能够列出更加详细的信息
4 Linux .bashrc 和 .profile文件的区别
在Linux系统中,.bashrc
和.profile
是两个重要的配置文件,可以用于定义用户的环境变量,别名,和自定义命令等。
主要区别:
.bashrc
是Bash Shell的配置文件,位于用户的主目录下;.bashrc在每次交互式会话时都会执行一次。通常用于定义个性化的命令别名,环境变量,以及用户自定义函数,.bashrc主要影响交互式的bash会话,例如终端窗口。.profile
是一个更为通用的配置文件,会被各种shell使用,该文件也位于用户的主目录下。.profile只在用户登录时执行一次,被用来设置用户的全局环境变量和启动脚本,以及一些常见的环境变量配置。.profile文件适用于所有shell,因此更为通用。/etc/profile
是针对系统全局的环境配置,在这个文件中添加的设置会对系统中所有的用户生效。- 可使用source命令使修改的文件生效
5 Linux下的特殊文件
-
/dev/null
黑洞文件:特殊的设备文件,被称为设备文件,是因为它提供了对设备的访问,但是实际上不对任何物理设备进行读写操作。黑洞文件会将所有写入它的数据丢弃,因此将数据写入黑洞文件,就相当于永久删除数据。从黑洞文件中中读取数据时,她会立即返回一下文件结束符。 -
/dev/zero
空白文件:特殊的设备文件,被称为设备文件,是因为它提供了对设备的访问,但是实际上不对任何物理设备进行读写操作。空白文件会不断的产生空字节(0),因此从中读取数据会得到无限的空字节流,不会遇到文件结束符。通常用于初始化和清零操作。 -
/dev/urandom
随机文件:特殊的设备文件,是Linux系统中提供的随机伪设备。这两个文件用于提供永不为空的随机字节数据流。很多的加密解密软件都会用到此文件。主要的差异:/dev/random
的random pool需要依赖于系统中断,因此在系统的中断数不足的情况下,/dev/random
设备会一直处于封锁状态,尝试读取随机数据的进程就会处于等待状态,直到系统的中断数充分够用,/dev/random
设备的优点是可以确保数据的随机性。/dev/urandom
设备不依赖于random pool,不会造成读取进程等待,但是其随机性也不高。
# 读取100个字节并以十六进制的形式进行显示
cat /dev/urandom | head -c 100 | od -x
例如,需要创建一个指定大小的文件,可通过dd命令配合空白文件实现:
dd if=/dev/zero of=new_file.bin bs=100M count=1
通过上述命令,创建了一个大小为100M的文件。
dd命令可实现从输入文件,读取特定字节的数据,写入新文件。if可指定输入文件,of可指定输出文件,bs表示要读取的数据块的大小,count表示数据块的数量。此外,还可以通过conv命令来将读取出来的数据,进行特定的转换,再写入输出文件。
# 转换为大写conv=ucase
dd if=/dev/zero of=new_file.bin bs=100M count=1 conv=ucase
/dev/shm
共享内存:在/dev目录下可以看到,/dev/shm
是一个目录,这是Linux系统利用内存虚拟出来的一个文件系统,这个目录中的文件都是保存在内存中,因此存取效率很高。但是这个目录中的数据,不会持久化到磁盘,系统重启以后,数据会丢失。它的默认大小是内存的一半,被她占用的内存,不会被操作系统回收利用。