undefined

libc.so.6 库误删了如何解决?

glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个作业系统。在 GNU/Linux 系统中,其C函式库发展史点出了GNU/Linux 演进的几个重要里程碑,用 glibc 作为系统的C函式库,是GNU/Linux演进的一个重要里程碑。

1
2
3
4
5
6
7
8
9
10
11
12
[/usr/bin] ldd ./ls
linux-vdso.so.1 => (0x00007ffc8e7e0000)
/$LIB/libonion.so => /lib64/libonion.so (0x00007f8b6f67c000)
libselinux.so.1 => /usr/lib64/libselinux.so.1 (0x00007f8b6f33c000)
libcap.so.2 => /usr/lib64/libcap.so.2 (0x00007f8b6f137000)
libacl.so.1 => /usr/lib64/libacl.so.1 (0x00007f8b6ef2e000)
libc.so.6 => /usr/lib64/libc.so.6 (0x00007f8b6eb60000)
libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f8b6e95c000)
libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007f8b6e6fa000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8b6f563000)
libattr.so.1 => /usr/lib64/libattr.so.1 (0x00007f8b6e4f5000)
libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f8b6e2d9000)

1. LD_PRELOAD 介绍

LD_PRELOADLinux 系统的一个环境变量,它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量,我们可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。一方面,我们可以以此功能来使用自己的或是更好的函数(无需别人的源码),而另一方面,我们也可以以向别人的程序注入程序,从而达到特定的目的。

举一个例子来详细说明下,我们现在有一个 libmystrcmp.so 的文件和一个测试文件 main.c。如下

查看更多

undefined

linux 守护进程的启动方法

http://www.ruanyifeng.com/blog/2016/02/linux-daemon.html

Linux下守护进程的启动方法

守护进程类似于内核进程一样,是一直在后台运行的进程。“前台任务”和“后台任务”的本质区别就是:是否继承了标准输入。

一、SIGHUP信号

用户退出session之后,“后台任务”是否还会继续,取决于一个参数。

  1. 用户准备退出session
查看更多

undefined

linux 技术&命令

  • RAID 技术 通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区 段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的 性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据 冗余备份效果。
  • 查看 /proc/cpuinfo 可以看到几个cpu几个核心, /proc/meminfo 查看内存大小
  • netstat * -t : 指明显示TCP端口
    • -u : 指明显示UDP端口
查看更多

undefined

linux 系统日志以及分析

https://blog.csdn.net/dubendi/article/details/78782691

想要分析 linux 系统遇到的各种各样的情况,那就需要多看日志。

大部分的 linux 默认的日志守护进程是 syslog,位于 /etc/syslog 或者 /etc/syslogd 或者 /etc/rsyslog.d。默认配置文件为 /etc/syslog.conf 或者 rsyslog.conf。任何希望生成日志的程序都可以向 syslog 发送消息。

默认的配置下,日志文件通常保存在 /var/log 目录下

日志类型

一些常见的日志类型,但并不是所有的 linux 发行版都包含这些类型。

查看更多

undefined

linux下进程状态解析

一、Linux进程状态(R、S、D、T、Z、X)

R(TASK_RUNNING),可执行状态

Running or runnable (on run queue)

只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。

很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态,这两种状态在linux下统一为 TASK_RUNNING状态。

S(TASK_INTERRUPTIBLE),可中断的睡眠状态

Interruptible sleep (waiting for an event to complete)

处于这个状态的进程因为等待某某事件的发生(比如等待socket连接、等待信号量),而被挂起。这些进程的task_struct结构被放入对应事件的等待队列中。当这些事件发生时(由外部中断触发、或由其他进程触发),对应的等待队列中的一个或多个进程将被唤醒。

查看更多

undefined

linux下的tempfs文件系统和/dev/shm目录

Linux系统tempfs和/dev/shm解析

一、tempfs文件系统

文件系统有两种变体,称为_shm_和 _tmpfs_。它们都共享核心功能,并且主要用途不同。内核使用shm为匿名页面创建文件支持,并为shmge()创建的区域提供支持。该文件系统由kern_mount()挂载这样它就可以在内部安装并且对用户不可见。tmpfs是一个临时文件系统,可以选择将其安装在/tmp/上,以具有基于RAM的快速临时文件系统。tmpfs的第二个用途 是将其安装在 /dev/shm/ 上。tmpfs文件系统中mmap()文件的进程将能够在它们之间共享信息,以作为System V IPC机制的替代方法。

tempfs是驻留在内存或交换分区中的临时文件系统。将目录挂载为tempfs是加快对其文件访问速度的有效方法。传统的虚拟磁盘是一个块设备,但tempfs是一个文件系统,而不是块设备,只需要安装它,就可以使用了。

tempfs的用途

  • 总会有一个内核内部挂载,也许我们看不到,可能用于共享内存等
查看更多