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系统利用内存虚拟出来的一个文件系统,这个目录中的文件都是保存在内存中,因此存取效率很高。但是这个目录中的数据,不会持久化到磁盘,系统重启以后,数据会丢失。它的默认大小是内存的一半,被她占用的内存,不会被操作系统回收利用。

6 Linux共享内存

posted @ 2023-07-09 08:34  Alpha205  阅读(18)  评论(0编辑  收藏  举报