Shell编程时常用的系统文件

2023-11-09

10.1 Linux系统目录结构

/

根目录,所有文件的第一级目录

/home

普通用户家目录

/root

超级用户家目录

/usr

用户命令、应用程序等目录

/var

应用数据、日志等目录

/lib

库文件和内核模块目录

/etc

系统和软件配置文件

/bin

可执行程序目录

/boot

内核加载所需的文件,grub引导

/dev

设备文件目录,比如磁盘驱动

/tmp

临时文件目录

/opt

第三方软件安装目录

10.2 环境变量文件

系统级

系统级变量文件对所有用户生效。

/etc/profile   # 系统范围内的环境变量和启动文件。不建议把要做的事情写在这里面,最好创建一个自定义的,放在/etc/profile.d下

/etc/bashrc    # 系统范围内的函数和别名

用户级

用户级变量文件对自己生效,都在自己家目录下。

~/.bashrc     # 用户指定别名和函数

~/.bash_logout   # 用户退出执行

~/.bash_profile  # 用户指定变量和启动程序

~/.bash_history  # 用户执行命令历史文件

开启启动脚本顺序:/etc/profile-> /etc/profile.d/*.sh -> ~/.bash_profile -> ~/.bashrc ->/etc/bashrc

因此,我们可以把写的脚本放到以上文件里执行。

10.3 系统配置文件

/etc/issue

系统版本

/etc/hosts

主机名与IP对应关系

/etc/resolv.conf

DNS服务器地址

/etc/hostname

主机名

/etc/sysctl.conf

系统参数配置文件

/etc/sudoers

sudo权限配置

/etc/init.d

服务启动脚本

/etc/sysconfig/network-scripts   

网卡信息配置目录

/etc/rc.d/rc.local

系统init初始化完后执行,不建议将启动服务写在这里面,应创建自己的systemd或udev

/etc/fstab

硬盘自动挂载配置

/etc/inittab

系统启动运行级别

/etc/crontab  

系统级任务计划

/var/spool/cron

用户级任务计划,此目录下以用户名命名对应每个用户的任务计划

/etc/cron.d

描述计算机任务计划

/etc/hosts.allow

TCP包访问列表

/etc/hosts.deny

TCP包拒绝列表

/etc/skel

新账户默认环境文件

/usr/share/doc

各软件的文档

/etc/sshd_config

SSH服务配置文件

/var/log

系统和应用程序日志目录

/var/spool/mail

邮件目录

crontab任务计划说明:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

10.4 /dev目录

/dev目录下存放的是一些设备文件。

/dev/hd[a-t]

IDE设备

/dev/sd[a-z]

SCSI设备

/dev/dm-[-9]

LVM逻辑磁盘

/dev/null

黑洞

/dev/zero

无限0数据流

/dev/random和/dev/urandom

随机数设备

 

10.5 /proc目录

/proc是一个虚拟目录,数据存储在内存中,存放内核运行时的参数、网络信息、进程状态等。

10.5.1/proc

/proc/[0-9]+

此目录下数字命名的目录是运行进程信息,目录名为PID

/proc/meminfo

物理内存、交换空间等信息,free

/proc/loadavg

系统负载

/proc/uptime

系统运行时间

计算系统启动时间:

date -d "$(awk -F.  '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"

或 who -b 

/proc/cpuinfo

CPU信息

/proc/modules

系统已加载的模块或驱动,lsmod

/proc/mounts

文件系统挂载信息,mount

/proc/swaps

swap分区信息

/proc/partitions

系统分区信息

/proc/version

内核版本

/proc/stat

CPU利用率,磁盘,内存页

/proc/devices

可用的设备列表

10.5.2/proc/net

/proc/net 目录存放的是一些网络协议信息。

/proc/net/tcp

TCP状态连接信息,netstat

/proc/net/udp

UDP状态连接信息

/proc/net/arp

arp信息表

/proc/net/dev

网卡流量

/proc/net/snmp

网络传输协议的收发包信息

/proc/net/sockstat

socket使用情况,比如已使用,正在使用

/proc/net/netstat

网络统计数据,netstat -s

/proc/net/route

路由表

/proc/net/nf_conntrack

当前连接追踪表

10.5.3/proc/sys

这个目录下的文件可被读写,存了大多数内核参数,可以修改改变内核行为。所以修改这些文件要特别小心,修改错误可能导致内核不稳定。

有四个主要的目录:

fs      # 文件系统各方面信息,包括配额、文件句柄、inode和目录项。

kernel   # 内核行为的信息

net     # 网络配置信息,包括以太网、ipx、ipv4和ipv6。

vm      #Linux内核的虚拟内存子系统,通常称为交换空间。

/proc/sys/fs/file-max

内核分配所有进程最大打开文件句柄数量,可适当增加此值

/proc/sys/fs/file-nr

只读,第一个值已分配的文件句柄数量,第二个值分配没有使用文件句柄数量,第三个值文件句柄最大数量。lsof

/proc/sys/kernel/acct

第一个值日志恢复所需空间百分比,第二个值百分比阈值,第三个值时间间隔

/proc/sys/kernel/ctrl-alt-del

组合键重启计算机,只为0同步缓冲区到磁盘,1为不同步

/proc/sys/kernel/domainname

配置系统域名

/proc/sys/kernel/exec-shield

配置内核执行保护功能,防止某类型缓冲区溢出攻击。0为禁用,1开启

/proc/sys/kernel/hostname

配置系统主机名

/proc/sys/kernel/osrelease

内核版本号

/proc/sys/kernel/ostype

操作系统类型

/proc/sys/kernel/shmall

设置共享内存的总量,以字节为单位

/proc/sys/kernel/shmmax

设置最大共享内存段

/proc/sys/kernel/shmmni

设置共享内存段最大数量

/proc/sys/kernel/threads-max

设置最大允许线程数量

/proc/sys/kernel/pid_max

设置最大允许创建的pid数量

/proc/sys/kernel/version

显示最后一次编译内核时间

/proc/sys/kernel/random/uuid

生成uuid

/proc/sys/kernel/core_pattern

coredump控制core文件位置和保存格式

echo "/corefile/core-%e-%p-%t"  

>  /proc/sys/kernel/core_pattern

/proc/sys/net/core/netdev_max_backlog

设置数据包队列允许最大数量

/proc/sys/net/core/optmem_max

设置socket允许最大缓冲区大小

/proc/sys/net/core/somaxconn

每个端口最大监听队列长度

/proc/sys/net/core/rmem_default

设置socket接收默认缓冲区大小,单位字节

/proc/sys/net/core/rmem_max

设置socket接收最大缓冲区大小

/proc/sys/net/core/wmem_default

设置socket发送默认缓冲区大小

/proc/sys/net/core/wmem_max

设置socket发送最大缓冲区大小

/proc/sys/net/nf_conntrack_max

设置连接追踪的最大值

/proc/sys/net/ipv4/icmp_echo_ignore_all和icmp_echo_ignore_broadcasts

设置是否忽略icmp响应包和广播包,0为不忽略,1为忽略

/proc/sys/net/ipv4/ip_default_ttl

设置默认生存时间

/proc/sys/net/ipv4/ip_forward

允许系统接口转发数据包,默认0为关闭,1为开启

/proc/sys/net/ipv4/ip_local_port_range

指定使用本地TCP或UDP端口范围,第一个值最低,第二个值最高

/proc/sys/net/ipv4/tcp_syn_retries

限制重新发送syn尝试建立连接次数

/proc/sys/net/ipv4/tcp_synack_retries

syn ack确认包尝试次数

/proc/sys/net/ipv4/tcp_syncookies

是否启用syn cookie,0为关闭,默认1为开启

/proc/sys/net/ipv4/tcp_max_tw_buckets

系统保持TIME_WAIT最大数量

/proc/sys/net/ipv4/tcp_tw_recycle

是否启用TIME_WAIT快速收回,默认0为关闭,1为开启

/proc/sys/net/ipv4/tcp_tw_reuse

是否启用TIME_WAIT复用,默认0为关闭,1为开启

/proc/sys/net/ipv4/tcp_keepalive_time

TCP连接保持时间(默认2小时),当连接活动,定时器会重新复位。

/proc/sys/net/ipv4/tcp_keepalive_intvl

TCP探测间隔时间(默认75秒)

/proc/sys/net/ipv4/tcp_keepalive_probes

发送TCP探测包(特殊的消息包,很小,专门检查存活)的总数量,总共9次,每次间隔时间是75秒,大约11分钟如果对方不应答内核就丢弃

/proc/sys/net/ipv4/tcp_mem

TCP使用内存,单位页。第一个值内存使用下限,低于此值内核不做处理,第二个值超过,内核会进入压力模式,第三个值超过,就会拒绝分配socket。

/proc/sys/vm/swappiness

内核按此值百分比来使用swap,值越小越不考虑使用物理内存,0为尽可能不使用swap

/proc/sys/vm/overcommit_memory

控制内存分配,默认0为内核先评估可用内存,如果足够允许申请,否则拒绝,1为允许分配所有物理内存,2为允许分配超过物理内存和交换空间总和的内存

/proc/sys/vm/overcommit_ratio

指定物理内存比率,当overcommit_memory=2时,用户空间进程可使用的内存不超过物理内存*overcommit_ratio+swap

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Shell编程时常用的系统文件 的相关文章

  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • Locale.getDefault() 始终返回 en

    unix 机器上的服务器始终使用 en 作为默认区域设置 以下是区域设置输出 LANG en US LC CTYPE C LC NUMERIC C LC TIME C LC COLLATE C LC MONETARY C LC MESSAG
  • 为什么我收到的数据包数据大小大于mss?

    我在两台 PC 上使用 ifconfig ethX mtu 300 修改了 MTU 并使用 netperf 测试网络 我用 WireShark 嗅探了 SYN 数据包中的 MSS 260 但我得到了一些大于 260 的数据包 为什么 嗅探器
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • Android:ANT 构建失败,并显示 google-play-services-lib:“解析为没有项目的 project.properties 文件的路径”

    我正在尝试使用 ANT 构建我的应用程序 但在包含 google play services lib 库项目后 我惨遭失败 Step 1 我在 project properties 文件中设置了对库项目的引用 android library
  • 无法加载 JavaHL 库。- linux/eclipse

    在尝试安装 Subversion 插件时 当 Eclipse 启动时出现此错误 Failed to load JavaHL Library These are the errors that were encountered no libs
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 从 Python 调用 PARI/GP

    我想打电话PARI GP http pari math u bordeaux fr dochtml gpman html仅从Python计算函数nextprime n 对于不同的n是我定义的 不幸的是我无法得到帕里蟒蛇 http code
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im

随机推荐

  • [生产力]VSCode必备插件-C/C++开发

    文章目录 1 C C for Visual Studio Code 2 C Intellisense 3 Git Graph 4 compareit 5 TODO Highlight 6 Bookmarks 7 Markdown All i
  • LLVM系列第一章:编译LLVM源码

    系列文章目录 LLVM系列第一章 编译LLVM源码 LLVM系列第二章 模块Module LLVM系列第三章 函数Function LLVM系列第四章 逻辑代码块Block LLVM系列第五章 全局变量Global Variable LLV
  • [CSDN] 批量导出博客markdown文件

    需求 为了备份或者迁移博客 需要导出博客的md格式文件 除了 爬虫 自带导出功能 编辑模式 ctrl c ctrl v 之外还有一种十分方便的方法 一行命令导出法 方法 进入 404页面 https blog console api csd
  • 自旋锁与读写锁

    1 读写锁 读写锁与互斥量类似 但是读写锁允许更高的并行性 互斥量要么是锁住多个要么是未锁住状态 而且一次只有一个线程可以对其加锁 读写锁可以有三种状态 读模式写加锁状态 写模式写加锁状态 不加锁状态 一次只有一个线程可以占有写模式下的读写
  • 四家中国企业上榜、AI 开发工具崛起,CB Insights 2022 年度 AI 100 全球榜单发布!...

    整理 郑丽媛 出品 CSDN ID CSDNnews 近日 全球知名市场数据分析机构 CB Insights 最新公布了 2022 年度 AI 100 榜单 自 2017 年起 CB Insights 每年都会发布 AI 100 榜单 在全
  • yum安装mysql 8.0

    一 安装mysql 8 0 yum源 cd etc yum repos d curl https repo mysql com mysql80 community release el7 3 noarch rpm gt centos7 my
  • 黄淮学院CSDN高校俱乐部李神龙主席发来的新年礼物感恩帖

    下午刚收到俱乐部总部给我发的礼物 心里甜甜的 先展示一下 嘿嘿 表示下半学年一定要好好工作 要不就对不起天山经理 姚希姐 付菁姐还有仲伟哥给的评语了 新的一年祝天山经理升官发财 姚希付菁姐美貌如花 仲伟哥英明神武 CSDN高校俱乐部一家人亲
  • Spring Cloud之Eureka集群与安全认证

    文章目录 前言 一 Eureka集群 1 修改配置文件为application replica1 properties 2 新增配置文件application replica2 properties 3 分别使用两个配置文件启动同一eure
  • 基本数据类型与引用数据类型的区别

    一 数据类型 java中的数据类型分为两大类 基本数据类型与引用数据类型 1 基本数据类型 基本数据类型只有8种 可按照如下分类 整数类型 long int short byte 浮点类型 float double 字符类型 char 因为
  • 拳王公社:最新虚拟资源项目赚钱成交系统,1.2W字干货大揭秘!

    小白如何快速利用虚拟资源赚到钱 本文篇幅较长 要赚钱 请耐心读完 一 选择好项目的5大要素 现在是互联网时代 信息差就是利润差 网络小白 新手找副业难 没方向 找不到好项目成为了问题 小白找副业或兼职最担心的就是承担大量资金投入 承担不明确
  • A - Odd Palindrome (回文串)

    A Odd Palindromehttps vjudge csgrandeur cn problem Gym 101652N include
  • Dom详细讲解

    1 Dom的基本介绍 1 1 什么是DOM 文档对象模型 英文全称为Document Object Model 它提供了对文档的结构化的表述 并定义了一种方式可以使从程序中对该结构进行访问 从而改变文档的结构 样式和内容 D Documen
  • pytorch环境搭建,pytorch超详细最新安装教程(一步到位)

    PyTorch是深度学习的主流框架之一 新手入门相对容易 PyTorch是一个开源的Python机器学习库 其前身是2002年诞生于纽约大学 的Torch 它是美国Facebook公司使用python语言开发的一个深度学习的框架 2017年
  • [转]element中this.$message 失效问题解决方法(使用全局调用,重新定义this)(转载请删除括号里的内容)

    这两天写项目的时候发现了这个问题 问题再现 在Model框中操作数据 在使用this message进行消息提示时发现 提示框失效 本人解决方案 具体原因我没有找出来 写这个出来也是为了让大佬指点指点 保存修改数据 handleSaveMu
  • C语言-蓝桥杯-路径

    题目 小蓝学习了最短路径之后特别高兴 他定义了一个特别的图 希望找到图 中的最短路径 小蓝的图由 2021 个结点组成 依次编号 1 至 2021 对于两个不同的结点 a b 如果 a 和 b 的差的绝对值大于 21 则两个结点 之间没有边
  • javascript控制浏览器弹窗和输出内容

    alert 这是我制作的第一行代码 这行是用于控制浏览器弹出一个
  • React使用公共文件夹public

    两者区别 其实放在两个文件夹区别就在于是否会被webpack所处理 如果您将文件放入该public文件夹 webpack 将不会处理它 在你打包的时候 会将public文件夹直接复制一份到你构建出来的文件夹中 而src assets目录的文
  • Android 三大图片加载框架比较

    1 哪三大图片加载框架 1 Picasso 2 Glide 3 Fresco 2 介绍 Picasso 和Square的网络库一起能发挥最大作用 因为Picasso可以选择将网络请求的缓存部分交给了okhttp实现 Glide 模仿了Pic
  • unity ugui text随文字增多自动调节宽度或者高度组件(备忘)

    Content Size Fitter
  • Shell编程时常用的系统文件

    10 1 Linux系统目录结构 根目录 所有文件的第一级目录 home 普通用户家目录 root 超级用户家目录 usr 用户命令 应用程序等目录 var 应用数据 日志等目录 lib 库文件和内核模块目录 etc 系统和软件配置文件 b