已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Linux 內(nèi)核提供了一種通過(guò) /proc 文件系統(tǒng),在運(yùn)行時(shí)訪問(wèn)內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)、改變內(nèi)核設(shè)置的機(jī)制。本文只討論基于 intel x86 架構(gòu)的 Linux /proc 文件系統(tǒng)。/proc 文件系統(tǒng)是一種內(nèi)核和內(nèi)核模塊用來(lái)向進(jìn)程 (process) 發(fā)送信息的機(jī)制 (所以叫做 /proc)。這個(gè)偽文件系統(tǒng)讓你可以和內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)進(jìn)行交互,獲取有關(guān)進(jìn)程的有用信息,在運(yùn)行中 (on the fly) 改變?cè)O(shè)置 (通過(guò)改變內(nèi)核參數(shù))。 與其他文件系統(tǒng)不同,/proc 存在于內(nèi)存之中而不是硬盤上。/proc 由內(nèi)核控制,沒(méi)有承載 /proc 的設(shè)備。因?yàn)?/proc 主要存放由內(nèi)核控制的狀態(tài)信息,所以大部分這些信息的邏輯位置位于內(nèi)核控制的內(nèi)存。對(duì) /proc 進(jìn)行一次 ls -l 可以看到大部分文件都是 0 字節(jié)大的;不過(guò)察看這些文件的時(shí)候,確實(shí)可以看到一些信息。這怎么可能?這是因?yàn)?/proc 文件系統(tǒng)和其他常規(guī)的文件系統(tǒng)一樣把自己注冊(cè)到虛擬文件系統(tǒng)層 (VFS) 了。然而,直到當(dāng) VFS 調(diào)用它,請(qǐng)求文件、目錄的 i-node 的時(shí)候,/proc 文件系統(tǒng)才根據(jù)內(nèi)核中的信息建立相應(yīng)的文件和目錄。加載 proc 文件系統(tǒng) 如果系統(tǒng)中還沒(méi)有加載 proc 文件系統(tǒng),可以通過(guò)如下命令加載 proc 文件系統(tǒng):mount -t proc proc /proc上述命令將成功加載你的 proc 文件系統(tǒng)。更多細(xì)節(jié)請(qǐng)閱讀 mount 命令的 man page。察看 /proc 的文件 /proc 的文件可以用于訪問(wèn)有關(guān)內(nèi)核的狀態(tài)、計(jì)算機(jī)的屬性、正在運(yùn)行的進(jìn)程的狀態(tài)等信息。大部分 /proc 中的文件和目錄提供系統(tǒng)物理環(huán)境最新的信息。盡管 /proc 中的文件是虛擬的,但它們?nèi)钥梢允褂萌魏挝募庉嬈骰蛳駇ore, less或 cat這樣的程序來(lái)查看。當(dāng)編輯程序試圖打開(kāi)一個(gè)虛擬文件時(shí),這個(gè)文件就通過(guò)內(nèi)核中的信息被憑空地 (on the fly) 創(chuàng)建了。這是一些我從我的系統(tǒng)中得到的一些有趣結(jié)果$ ls -l /proc/cpuinfo-r-r-r- 1 root root 0 Dec 25 11:01 /proc/cpuinfo$ file /proc/cpuinfo/proc/cpuinfo: empty$ cat /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu family : 6model : 8.bogomips : 1992.29注意:這里ls, file兩個(gè)命令看到的cpuinfo的大小是0,但是cat可以可以看到內(nèi)容.得到有用的系統(tǒng)/內(nèi)核信息 proc 文件系統(tǒng)可以被用于收集有用的關(guān)于系統(tǒng)和運(yùn)行中的內(nèi)核的信息。下面是一些重要的文件:* /proc/cpuinfo - CPU 的信息 (型號(hào), 家族, 緩存大小等)* /proc/meminfo - 物理內(nèi)存、交換空間等的信息* /proc/mounts - 已加載的文件系統(tǒng)的列表* /proc/devices - 可用設(shè)備的列表* /proc/filesystems - 被支持的文件系統(tǒng)* /proc/modules - 已加載的模塊* /proc/version - 內(nèi)核版本* /proc/cmdline - 系統(tǒng)啟動(dòng)時(shí)輸入的內(nèi)核命令行參數(shù)* /proc/XXX XXX是指以數(shù)字編號(hào)的目錄,有不少這樣的目錄,每一個(gè)目錄表示一個(gè)進(jìn)程(即線程組)* /proc/sys 可以修改的系統(tǒng)信息* /proc/swaps - 要獲知swap空間的使用情況* /proc/uptime - 獲取系統(tǒng)的正常運(yùn)行時(shí)間* /proc/fs/nfsd/exports - 列出由NFS共享的文件系統(tǒng)* /proc/kmsg 該文件被作為內(nèi)核日志信息源,它可以被作為一個(gè)系統(tǒng)信息調(diào)用的接口使用。 * /proc/kcore 該文件提供了以內(nèi)核文件格式形式訪問(wèn)系統(tǒng)物理內(nèi)存,并且可以被gdb用于檢查任意內(nèi)核數(shù)據(jù)結(jié)構(gòu)的當(dāng)前狀態(tài)。如果裝了源碼,那么可以通過(guò)查看/usr/src/linux/Documentation/filesystems/proc.txt文件來(lái)獲取更多的信息 。有關(guān)運(yùn)行中的進(jìn)程的信息 /proc 文件系統(tǒng)可以用于獲取運(yùn)行中的進(jìn)程的信息。在 /proc 中有一些文件名為數(shù)字的子目錄。每個(gè)目錄對(duì)應(yīng)一個(gè)進(jìn)程 id (PID)。這樣,每一個(gè)運(yùn)行中的進(jìn)程 /proc 中都有一個(gè)用它的 PID 命名的目錄。這些子目錄中包含可以提供有關(guān)進(jìn)程的狀態(tài)和環(huán)境的重要細(xì)節(jié)信息的文件。下面是一些文件(實(shí)在太多,只列一部分):1.文件 cmdline 包含啟動(dòng)進(jìn)程時(shí)調(diào)用的命令行。2.envir 進(jìn)程的環(huán)境變兩。 3.status 是進(jìn)程的狀態(tài)信息,包括啟動(dòng)進(jìn)程的用戶的用戶ID (UID) 和組ID(GID) ,父進(jìn)程ID (PPID),還有進(jìn)程當(dāng)前的狀態(tài),比如Sleelping和Running。4.”cwd”是指向進(jìn)程當(dāng)前工作目錄的符號(hào)鏈接5.exe指向運(yùn)行的進(jìn)程的可執(zhí)行程序5.root指向被這個(gè)進(jìn)程看作是根目錄的目錄 (通常是/)。6.fd包含指向進(jìn)程使用的文件描述符的鏈接。 7.cpu僅在運(yùn)行 SMP 內(nèi)核時(shí)出現(xiàn),里面是按 CPU 劃分的進(jìn)程時(shí)間。/proc/self 是一個(gè)有趣的子目錄,它使得程序可以方便地使用 /proc 查找本進(jìn)程地信息。/proc/self 是一個(gè)鏈接到 /proc 中訪問(wèn) /proc 的進(jìn)程所對(duì)應(yīng)的 PID 的目錄的符號(hào)鏈接。通過(guò) /proc 與內(nèi)核交互 上面討論的大部分 /proc 的文件是只讀的。而實(shí)際上 /proc 文件系統(tǒng)通過(guò) /proc 中可讀寫的文件提供了對(duì)內(nèi)核的交互機(jī)制。寫這些文件可以改變內(nèi)核的狀態(tài),因而要慎重改動(dòng)這些文件。/proc/sys 目錄存放所有可讀寫的文件的目錄,可以被用于改變內(nèi)核行為(linux有專門的api做讀取這個(gè)目錄的文件)。/proc/sys/kernel:這個(gè)目錄包含反通用內(nèi)核行為的信息.可修改已改變配置./proc/sys/kernel/domainname, hostname: 存放著機(jī)器/網(wǎng)絡(luò)的域名和主機(jī)名。這些文件可以用于修改這些名字。通過(guò)修改 /proc 文件系統(tǒng)中的文件,我們可以修改主機(jī)名./proc/sys/net:這個(gè)目錄中的文件可以用于修改機(jī)器/網(wǎng)絡(luò)的網(wǎng)絡(luò)屬性。比如,簡(jiǎn)單修改一個(gè)文件,你可以在網(wǎng)絡(luò)上癮藏匿的計(jì)算機(jī)。$ echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_all這將在網(wǎng)絡(luò)上癮藏你的機(jī)器,因?yàn)樗豁憫?yīng) icmp_echo。主機(jī)將不會(huì)響應(yīng)其他主機(jī)發(fā)出的 ping 查詢。要改回缺省設(shè)置,只要$ echo 0 /proc/sys/net/ipv4/icmp_echo_ignore_allVFS與proc fs的對(duì)照表 注意:proc僅存在于內(nèi)存中VFS類型Proc fs 相應(yīng)類型備注super block無(wú). proc只要使用VFS的super block就可以表示其信息了. 沒(méi)有自己的super block表示proc的super block動(dòng)態(tài)分配得到.Super block operation相應(yīng)的super_operations 為proc_sops.其值在備注欄顯示.alloc_inode= proc_alloc_inode,.destroy_inode= proc_destroy_inode,.read_inode= proc_read_inode,.drop_inode= generic_delete_inode,.delete_inode= proc_delete_inode,.statfs= simple_statfs,.remount_fs= proc_remount,inodeproc_inode.這個(gè)類型內(nèi)嵌了inode. proc有相應(yīng)的cache實(shí)例proc_inode_cachep來(lái)分配proc_inode實(shí)例.Inode operation不同文件的inode,其操作不一樣file無(wú)File operation不同文件其操作不一樣dentry無(wú)Dentry operaion不同文件其操作不一樣注:proc fs使用proc_dir_entry表示每一個(gè)inode(即proc_inode)實(shí)例, proc_dir_entry包含了proc中的文件所需要的信息. 每一個(gè)proc fs中的文件都有一個(gè)inode,也都有一個(gè)proc_dir_entry實(shí)例,該實(shí)例的首地址存放在相應(yīng)的inode的u.generic_ip成員中proc file inodeproc_inodeproc_dir_entryproc fs使用全局變量proc_fs_type 表示其文件系統(tǒng)類型.其定義如下:static struct file_system_type proc_fs_type = .name= proc,.get_sb= proc_get_sb,.kill_sb= kill_anon_super,;通過(guò)調(diào)用register_filesystem(proc_fs_type)向內(nèi)核注冊(cè)proc fs文件系統(tǒng)類型.proc fs定義了全局的指向vfsmount實(shí)例的指針proc_mnt.它通過(guò)調(diào)用kern_mount(proc_fs_type)進(jìn)行初始化, 并且proc_mnt有一個(gè)成員包含了proc fs超級(jí)塊的信息(proc_mnt.mnt_sb). 此外,proc_mnt也包含了兩個(gè)dentry實(shí)例. proc_mnt.mnt_root, proc_mnt.mnt_c fs使用了全局的vfsmount實(shí)例proc_mnt,以方便VFS對(duì)proc進(jìn)行管理.把proc fs加載后, 目錄/proc對(duì)應(yīng)的dentry是動(dòng)態(tài)分配的, 對(duì)應(yīng)的inode是動(dòng)態(tài)分配的, 對(duì)應(yīng)的proc_dir_entry是proc_root. (參考下文) 對(duì)proc文件的管理 前面我們提過(guò),相對(duì)于其他邏輯文件系統(tǒng)的具體文件組織形式(比如ext2文件系統(tǒng)的inode),proc文件系統(tǒng)也有自己的組織結(jié)構(gòu),那就是 proc_dir_entry結(jié)構(gòu),所有屬于proc文件系統(tǒng)的文件,都對(duì)應(yīng)一個(gè)proc_dir_entry結(jié)構(gòu),并且在VFS需要讀取proc文件的 時(shí)候,把這個(gè)結(jié)構(gòu)和VFS的inode建立鏈接(即由inode-u.generic_ip指向該prc_dir_entry結(jié)構(gòu))。 因此,proc文件系統(tǒng)實(shí)現(xiàn)了一套對(duì)proc_dir_entry結(jié)構(gòu)的管理,下面我們就此進(jìn)行一個(gè)分析。 proc_dir_entry結(jié)構(gòu) proc_dir_entry描述proc中文件的信息. 實(shí)例對(duì)應(yīng)一個(gè)proc中的文件.proc_dir_entry實(shí)例放在inode-u.generic_ip成員中. proc文件系統(tǒng)本質(zhì)就是一堆proc_dir_entry實(shí)例.proc_dir_entry定義如下:unsigned short low_ino;proc_dir_entry實(shí)例的ID, 除了根結(jié)點(diǎn),其他的節(jié)點(diǎn)號(hào)都是在創(chuàng)建proc_dir_entry的時(shí)候,由make_inode_number()動(dòng)態(tài)創(chuàng)建的unsigned short namelen; const char *name;proc文件的名字,以及其長(zhǎng)度mode_t mode;proc文件的模式由兩部分用位或運(yùn)算組成,第一部分是文件的類型,可以參考include/linux/stat.h中的定義,比 如,S_IFREG表示普通文件,而S_IFDIR表示目錄文件。第二部分是該文件的權(quán)限,同樣可以參考include/linux/stat.h中的定 義,比如,S_IRUSR表示該文件能夠被擁有者讀,S_IROTH 表示該文件可以被其他人讀取。但真正的權(quán)限檢查,我們可以放到后面提到的inode_operations結(jié)構(gòu)中。nlink_t nlink;uid_t uid; gid_t gid;unsigned long size;使用“l(fā)s”命令時(shí),所顯示出的文件大小struct inode_operations * proc_iops;proc中的inode的操作(即proc下inode的操作). 值得注意的是proc中不同的類型的文件其inode操作是不一樣的struct file_operations * proc_fops;Proc中file的操作.注意不同類型的文件支持的文件操作不一樣get_info_t *get_info當(dāng)用戶向proc文件讀取的數(shù)據(jù)小于一個(gè)頁(yè)面大小時(shí),可以使用這個(gè)函數(shù)向用戶返回?cái)?shù)據(jù)struct module *owner定義proc fs的模塊struct proc_dir_entry *next, *parent, *subdir;使用這些指針,把所有的proc_dir_entry構(gòu)成樹(shù)void *data;特殊用途的字段.如果文件是鏈接文件,那么這個(gè)字段指向目標(biāo)文件的文件名read_proc_t *read_proc;write_proc_t *write_proc;對(duì)于proc中普通的文件,我們只要用這兩個(gè)函數(shù)來(lái)實(shí)現(xiàn)或者寫操作. 而不用為其專門定義inode 操作.atomic_t count使用計(jì)數(shù).一個(gè)proc_dir_entry結(jié)構(gòu)的count減為零時(shí),會(huì)釋放該實(shí)例int deleted;當(dāng)我們調(diào)用remove_proc_entry函數(shù)要?jiǎng)h除一個(gè)proc_dir_entry時(shí),如果發(fā)現(xiàn)該結(jié)構(gòu)還在使用,就會(huì)設(shè)置該標(biāo)志并且退kdev_t rdev; 如果該proc文件是設(shè)備文件,那么設(shè)置這個(gè)成員創(chuàng)建proc文件create_proc_entry proc中使用create_proc_entry來(lái)創(chuàng)建一個(gè)文件.其函數(shù)原型為:struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent)該函數(shù)的執(zhí)行流程如下:1.檢查參數(shù)的合法性(eg:父節(jié)點(diǎn)的存在性)2.分配proc_dir_entry實(shí)例的空間(ent),然后做必要的初始化.比如,初始化文件名,如果該文件是目錄,那么把ent-proc_fops = &proc_dir_operations, ent-proc_iops = &proc_dir_inode_operations3.調(diào)用proc_register把ent加入proc文件系統(tǒng)(即proc文件樹(shù))中4.返回entproc_register函數(shù) 這個(gè)函數(shù)把一個(gè)proc文件加入到proc文件樹(shù)中,其函數(shù)原型如下:static int proc_register(struct proc_dir_entry * parent, struct proc_dir_entry * ent)其主要的流程如下:1.使用make_inode_number()函數(shù)動(dòng)態(tài)的到一個(gè)節(jié)點(diǎn)號(hào),并且設(shè)置low_ino.注意只是獲得inode編號(hào),并不會(huì)真的創(chuàng)建inode. 該inode的創(chuàng)建會(huì)推遲到proc_lookup中.2.將 這個(gè)proc_dir_entry結(jié)構(gòu)鏈接到它的父節(jié)點(diǎn)上3.根據(jù)文件類型(普通文件,目錄,symbolic)的不同,設(shè)置不同的缺省操作函數(shù)集。 刪除proc文件remove_proc_entry 這個(gè)函數(shù)用來(lái)刪除一個(gè)proc文件.注意如果該文件正被使用那么只是設(shè)置deleted標(biāo)志,該函數(shù)的原型:void remove_proc_entry(const char *name, struct proc_dir_entry *parent)其中name是待刪的proc文件. parent是該文件的父目錄. 其執(zhí)行流程如下:1.確定其父目錄.如果parent有效,則執(zhí)行2,否則(parent=NULL)嘗試從name分析出parent,如果分析失敗則函數(shù)返回失敗,否則執(zhí)行2.2.在parent中找出待刪的文件對(duì)應(yīng)的proc_dir_enty實(shí)例ent.3.把ent從proc文件樹(shù)中刪除,并更新樹(shù)的狀態(tài)4.如果該文件被使用則設(shè)置deleted標(biāo)識(shí)(在其后的恰當(dāng)時(shí)候會(huì)被釋放),否則調(diào)用free_proc_entry其他proc文件操作函數(shù) struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent)這個(gè)函數(shù)用來(lái)在proc文件系統(tǒng)中創(chuàng)建一個(gè)子目錄,根據(jù)它的參數(shù),我們就可以看出它的功能。在這個(gè)函數(shù)里,將動(dòng)態(tài)分配一個(gè) proc_dir_entry結(jié)構(gòu)以及它的名字,然后,設(shè)置目錄文件的缺省操作(proc_iops以及proc_fops)以及nlink值,最后,調(diào) 用proc_register函數(shù)將其注冊(cè)。 struct proc_dir_entry *proc_mknod(const char *name, mode_t mode, struct proc_dir_entry *parent, kdev_t rdev)用來(lái)在proc文件系統(tǒng)中建立一個(gè)設(shè)備文件,因此,在創(chuàng)建proc_dir_entry結(jié)構(gòu)后,沒(méi)有設(shè)置缺省操作,而是使用 ent-rdev = rdev指定了設(shè)備。最后,調(diào)用proc_register函數(shù)將其注冊(cè)。 struct proc_dir_entry *proc_symlink(const char *name, struct proc_dir_entry *parent, const char *dest)函數(shù),該函數(shù)創(chuàng)建了一個(gè)鏈接文件,使用ent-mode = S_IFLNK|S_IRUGO|S_IWUGO|S_IXUGO來(lái)標(biāo)志,它和其他文件的建立很相似,只是,它將鏈接的目標(biāo)文件名放在了 ent-data域中。最后,它同樣調(diào)用proc_register函數(shù)將該結(jié)構(gòu)注冊(cè)。struct proc_dir_entry *create_proc_read_entry(const char *name,mode_t mode, struct proc_dir_entry *base, read_proc_t *read_proc, void * data)創(chuàng)建只讀的proc文件,并且設(shè)置其對(duì)應(yīng)的proc_dir_entry中的read_proc成員. void create_seq_entry(char *name, mode_t mode, struct file_operations *f)在/proc目錄下創(chuàng)建一個(gè)文件,其文件操作函數(shù)由f指定內(nèi)核還定義了很多其他的創(chuàng)建proc文件的方式,請(qǐng)參考源代碼.對(duì)proc文件操作的分析 對(duì)于proc中的普通文件,目錄,鏈接的默認(rèn)操作為:注:需要看看下面各個(gè)全局函數(shù)表的各個(gè)成員是如何實(shí)現(xiàn)的.proc文件類型Inode默認(rèn)操作(proc_dir_c_iops)它也記錄在inode上類型:struct inode_operationsFile默認(rèn)操作(proc_dir_c_fops)它也記錄在inode上類型:struct file_operationsdentry默認(rèn)操作.它記錄在相應(yīng)的struct file實(shí)例上注意下面是proc定義的全局變量普通文件proc_file_inode_operationsproc_file_operationsproc_dentry_operations目錄proc_dir_inode_operationsproc_dir_operations;proc_dentry_operations鏈接proc_link_inode_operationsNULLproc_dentry_operations注意:Proc_dir_entry中有兩個(gè)函數(shù)指read_proc, write_proc.對(duì)于proc中普通的文件,我們只要用這兩個(gè)函數(shù)來(lái)實(shí)現(xiàn)或者寫操作. 而不用為其專門定義inode 操作或者file操作. 不同類型的文件,這兩個(gè)操作也不一樣. 下面的討論針對(duì)proc下各個(gè)類型的文件來(lái)說(shuō)明.如果必要會(huì)指定相應(yīng)的proc_dir_entry實(shí)例(通常是靜態(tài)的).如果沒(méi)有說(shuō)明是采用上面的默認(rèn)值. 注意,這里只列出一部分/proc(proc_root)proc_root_inode_operationsproc_root_operations/proc/meminfo注:read_proc為meminfo_read_proc,其它默認(rèn)/proc/modulesproc_modules_operations/proc/TGID(它其實(shí)是一個(gè)線程組)proc_tgid_base_inode_operationsproc_tgid_base_operationspid_base_dentry_operations注:/proc/tgid目錄下的文件的dentry操作均為pid_dentry_operations/proc/TGID/environ/proc/TGID/task/PID/environproc_info_file_operations; read_proc=proc_pid_environ注意:/proc/TGID下還有很多文件,其操作也大不相同.這里只是列舉了一些.另外/proc/tgid/task/pid目錄下的文件的操作大部分與/proc/TGID目錄下的操作一樣/proc/TGID/taskproc_task_inode_operationsproc_task_operations/proc/TGID/fd/proc/TGID/task/PID/fdproc_fd_inode_operationsproc_fd_operations/proc/TGID/task/PIDproc_tid_base_inode_operationsproc_tid_base_operationspid_base_dentry_operations/proc/selfproc_self_inode_operations假設(shè)有一個(gè)線程組,其TGID為32182, 其包含兩個(gè)線程:32182, 32255. 那么:執(zhí)行 ls /proc, 則能看到有一個(gè)32182的目錄.執(zhí)行 ls /proc/32182則能看到該線程組的信息執(zhí)行 ls /proc/32182/task則能看到兩個(gè)目錄32182,32255執(zhí)行 ls /proc/32182/task/32182則能看到該task實(shí)例的信息但是如果我們執(zhí)行 ls /proc/32255 也能得到和執(zhí)行l(wèi)s /proc/32182同樣的效果.假設(shè)有一個(gè)線程組,其TGID為32243, 其包含一個(gè)線程:32243. 那么其效果類似上面的情況.注意:針對(duì)/proc/TGID目錄下的各個(gè)文件,內(nèi)核定義了一個(gè)全局?jǐn)?shù)組tgid_base_stuff用來(lái)約定各個(gè)文件的基本信息,這個(gè)數(shù)據(jù)的元素的類型是pid_entry. 同樣,內(nèi)核也為/proc/TGID/task/PID目錄下的文件定義了全局?jǐn)?shù)組tid_base_stuff./proc/tgid目錄的創(chuàng)建時(shí)機(jī) (注意:這里只討論/proc/下的進(jìn)程目錄)當(dāng)執(zhí)行l(wèi)s /proc是并不會(huì)創(chuàng)建線程組的相應(yīng)目錄,而只是告訴你
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電梯課程設(shè)計(jì)范文
- 舞蹈機(jī)構(gòu)結(jié)業(yè)課程設(shè)計(jì)
- 統(tǒng)編版七年級(jí)語(yǔ)文上冊(cè)《5 秋天的懷念》-教學(xué)設(shè)計(jì)
- 游戲行業(yè)銷售人員工作總結(jié)
- 自閉癥科護(hù)士工作總結(jié)
- 2024年研學(xué)旅行指導(dǎo)師考試題庫(kù)(含答案)
- 2023-2024學(xué)年遼寧省大連二十四中高一(下)期中語(yǔ)文試卷
- 美發(fā)沙龍營(yíng)業(yè)員技巧總結(jié)
- 2024年認(rèn)識(shí)星期教案
- 農(nóng)村安裝雨棚材料合同(2篇)
- 《XL集團(tuán)破產(chǎn)重整方案設(shè)計(jì)》
- 智慧金融合同施工承諾書
- 術(shù)后甲狀旁腺功能減退癥管理專家共識(shí)
- 漢字文化解密學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 國(guó)家開(kāi)放大學(xué)電大本科《工程經(jīng)濟(jì)與管理》2023-2024期末試題及答案(試卷號(hào):1141)
- TBT3134-2023機(jī)車車輛驅(qū)動(dòng)齒輪箱 技術(shù)要求
- 河北省石家莊市橋西區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期末地理試卷
- 水利工程安全生產(chǎn)組織機(jī)構(gòu)
- 實(shí)施農(nóng)村客運(yùn)公交化改造推進(jìn)城鄉(xiāng)客運(yùn)一體化發(fā)展
- 口腔修復(fù)學(xué)專業(yè)英語(yǔ)詞匯整理
- 【圖文】化學(xué)纖維質(zhì)量檢驗(yàn)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論