cp自动创建层级结构的例子

本文介绍了一个实用的Linux命令技巧:如何利用cp命令的--parents选项,在拷贝文件的同时复制其完整的目录结构。这有助于在不同目录间保持文件组织的一致性。

http://blog.chinaunix.net/uid-9525959-id-2303690.html


一个拷贝命令的技巧,不仅拷贝文件,而且拷贝目录结构。记录下来。


*拷贝的时候,自动创建参数中源文件的路径:

#cp --parents parentdir1/parentdir2/sourcefile destdir/


这样拷贝的时候,会在目标路径中创建源文件参数中的所有父目录层级(不止是一层父目录),然后将源文件拷贝进去。实践证明,使
用--parent也行。


这里的具体过程和其中的结果如下:

[quietheart@lv-k cpp_test]$ ls ../install_test/
[quietheart@lv-k cpp_test]$ ls
a.out  class_test  const_cast_test  cppDemo  libtest  main.debuginfo  main.stripdebug  temp
[quietheart@lv-k cpp_test]$ cp --parent class_test/a.out ../install_test/
[quietheart@lv-k cpp_test]$ ls ../install_test/

class_test                                                                                                         


可见,拷贝当前class_test/a.out文件到../install_test之后,../install_test中也同时创建了a.out文件的目录结构而不仅仅是>拷贝文件。

<think>好的,用户现在问的是“Linux的主要结构”,我之前已经帮他详细解答了Systemd的相关内容。现在需要切换到Linux整体结构,我需要先回忆一下Linux系统的核心组成部分。用户可能对Linux的架构不太了解,需要从基础开始讲解。 首先,用户可能刚接触Linux,所以需要结构清晰,分层次介绍。我应该考虑Linux系统的分层结构,比如内核、Shell、文件系统、应用程序等。还要确保覆盖每个部分的作用和相互关系。 用户之前问过Systemd,属于系统管理的一部分,可能在系统管理方面有一定兴趣,但这次需要更全面的概述。可能用户是在学习Linux的基础知识,或者准备面试,需要整体了解。 另外,用户可能需要实际例子来理解抽象概念,比如内核的作用,Shell的具体使用,文件系统的目录结构。还需要注意使用中文术语,避免过多专业词汇,或者如果使用的话,要适当解释。 需要检查是否有遗漏的重要部分,比如启动过程、包管理等,但主要结构应该集中在核心组件。可能还要对比其他操作系统,比如Windows,帮助用户更好理解。 要注意用户可能的误区,比如将Linux内核与整个系统混淆,或者不清楚Shell和图形界面的关系。需要明确区分这些概念,并解释它们如何协同工作。 最后,确保回答结构清晰,分点明确,使用标题和示例代码块(如果有命令的话),保持与之前的回答风格一致,比如使用表格、代码块和项目符号,增强可读性。</think>### Linux 系统核心架构解析 Linux 系统采用**模块化分层设计**,其核心结构可划分为以下关键层级: --- #### 一、硬件抽象层 1. **内核空间(Kernel Space)** - **Linux 内核**:系统的核心引擎(版本号如 5.15.0-91-generic) - 进程调度:CFS(完全公平调度器)算法 - 内存管理:虚拟内存系统(支持交换空间) - 设备驱动:超过 3500 种硬件驱动模块 - 系统调用:提供约 400 个接口(通过`/proc/sys/kernel`可调参数) ```bash # 查看内核版本 uname -r # 查看加载的内核模块 lsmod | grep nvidia ``` 2. **硬件接口** - 通过`/dev`目录暴露设备节点 - 硬件资源监控工具: ```bash lspci # PCI设备列表 lsusb # USB设备检测 sensors # 温度监控 ``` --- #### 二、系统核心组件 1. **初始化系统(Init System)** - Systemd(主流):管理服务依赖与启动流程 - OpenRC(Gentoo等使用):兼容传统init脚本 2. **系统守护进程(Daemons)** - 关键服务: ```text udevd # 设备管理 cron/systemd-timers # 定任务 sshd # 远程访问 dbus-daemon # 进程间通信 ``` 3. **软件包管理体系** | 体系 | 命令工具 | 配置文件位置 | |-------------|---------------|----------------------| | Debian/APT | apt, dpkg | /etc/apt/sources.list| | RedHat/RPM | yum, dnf | /etc/yum.repos.d/ | | Arch/Pacman | pacman | /etc/pacman.conf | --- #### 三、用户空间(User Space) 1. **Shell 解释器** - **Bash**(默认):支持脚本编程与命令历史 - **Zsh/Fish**:现代替代方案(支持自动补全增强) - 重要配置文件: ```bash ~/.bashrc # 用户级配置 /etc/profile # 系统级环境变量 ``` 2. **图形界面体系** - 显示协议栈: ```text X Window System(Xorg) → 窗口管理器(GNOME/KDE) → 显示管理器(GDM/LightDM) ``` - 现代替代方案: - Wayland(更安全的显示协议) - Mir(Ubuntu定制协议) 3. **文件系统架构** | 目录 | 内容类型 | 重要子目录 | |-------------|---------------------------|--------------------------| | **/bin** | 基础命令(ls, cp等) | /bin/bash | | **/etc** | 系统配置文件 | /etc/nginx/ | | **/var** | 可变数据文件 | /var/log/ | | **/usr** | 用户程序资源 | /usr/local/(自定义安装)| | **/proc** | 进程与内核信息虚拟文件系统 | /proc/cpuinfo | | **/dev** | 设备文件 | /dev/sda1 | ```bash # 查看磁盘空间使用 df -h /home # 查找大文件 find /var/log -size +100M ``` --- #### 四、系统调用接口 1. **系统调用分类** | 类别 | 示例调用 | 用户空间接口 | |-------------|--------------------------|-----------------------| | 进程控制 | fork(), execve() | bash执行命令触发 | | 文件操作 | open(), read(), write() | vim编辑文件底层操作 | | 网络通信 | socket(), bind() | curl请求的底层实现 | 2. **调用过程示例** ```text 用户程序 → glibc库函数 → 软中断(int 0x80)→ 内核系统调用处理程序 → 返回结果 ``` --- #### 五、核心子系统交互 1. **存储管理** - 文件系统类型: ```text Ext4(默认) | XFS(大文件优化) | Btrfs(写复制) ``` - LVM 逻辑卷管理: ```bash pvcreate /dev/sdb1 # 创建物理卷 vgcreate vg_data /dev/sdb1 lvcreate -L 100G -n lv_mysql vg_data ``` 2. **网络协议栈** - 核心组件: ```text 网络接口卡驱动 → TCP/IP协议栈 → iptables/nftables防火墙 → 应用层协议(HTTP/SSH) ``` - 监控工具: ```bash ss -tulnp # 查看端口监听 tcpdump -i eth0 # 抓包分析 ``` --- #### 六、系统启动流程 1. **传统 BIOS 启动** ```text BIOS → MBR → GRUB → 内核加载 → initramfs → systemd → 用户登录 ``` 2. **UEFI 启动** ```text UEFI固件 → ESP分区 → GRUB2 → 内核 → 系统初始化 ``` 3. **启动分析工具** ```bash systemd-analyze blame # 查看各服务启动耗 dmesg | grep -i error # 检查内核启动日志 ``` --- ### 关键架构特性对比 | 特性 | Linux | Windows | |---------------------|-----------------------|---------------------| | **内核类型** | 宏内核 | 混合内核 | | **文件系统** | 一切皆文件 | 驱动器字母划分 | | **权限模型** | 用户/组/rwx | ACL访问控制列表 | | **软件安装** | 集中包管理 | 独立安装程序 | | **配置文件** | 纯文本文件 | 注册表数据库 | --- ### 学习路线建议 1. **基础掌握**: - 文件系统导航(cd, ls, pwd) - 文本处理(grep, sed, awk) - 权限管理(chmod, chown) 2. **中级技能**: ```bash # 进程管理 ps aux | grep nginx kill -9 PID # 网络配置 ip addr show nmcli connection modify eth0 ipv4.addresses 192.168.1.10/24 ``` 3. **高级运维**: - 内核参数调优(/etc/sysctl.conf) - SELinux/AppArmor安全策略 - 系统性能分析(perf, strace) --- **延伸实践**: 1. 如何通过`LD_PRELOAD`劫持系统调用? 2. 使用`systemtap`进行内核级追踪 3. 对比分析Linux与BSD内核设计哲学差异
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值