精华内容
下载资源
问答
  • Linux 命令面试题

    万次阅读 多人点赞 2019-07-24 09:40:04
    Linux面试题: 1.Linux常用系统安全命令 sudo // 超级用户 ... chmod // 用来变更文件或目录的权限 ...2.Linux常用进程管理命令 w // 用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。 top ...

    Linux面试题:
    1.Linux常用系统安全命令
    sudo // 超级用户
    su // 用于切换当前用户身份到其他身份,变更时需输入所要变更的用户账号与密码。
    chmod // 用来变更文件或目录的权限
    setfacl // 设置文件访问控制列表
    2.Linux常用进程管理命令
    w // 用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。
    top // 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
    ps // 用于报告当前系统的进程状态。
    kill // 用来删除执行中的程序或工作。
    pkill // 可以按照进程名杀死进程。
    pstree // 以树状图的方式展现进程之间的派生关系,显示效果比较直观。
    killall // 使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。
    3.Linux常用用户管理命令
    id // 可以显示真实有效的用户ID(UID)和组ID(GID)。
    usermod // 用于修改用户的基本信息。
    useradd // 用于 Linux中创建的新的系统用户。
    groupadd // 用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
    userdel // 用户删除给定的用户,以及与用户相关的文件。若不加选型,则进删除用户账号,而不删除相关文件。
    4.Linux系统关机和重启
    shutdown reboot
    5.Linux系统定时任务
    contab -e //创建定时任务
    6.Linux文件内容查看
    head // 用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
    tail // 用于输入文件中的尾部内容。tail命名默认在屏幕上显示指定文件的末尾10行。
    more // 用来浏览文件档案的内容(只能向前浏览)。
    less // 用来浏览文字档案的内容,允许用户向前或向后浏览文件。使用该命令时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。
    7.计划每星期天早8点服务器定时重启,如何实现?
    Crontab-e
    0008 * * 7 /sbin/init 6
    8.linux下如何改IP,主机名,DNS
    使用setup 命令可以修改IP 和DNS ,修改完后重启网络:service network restart

    临时修改即时生效,重启后失效
    hostname主机名: 修改主机名
    ifconfigeth0 IP netmask 掩码 :修改IP

    永久修改主机名: 修改:/etc/sysconfig/network 文件 HOSTNAME=主机名
    永久修改IP地址:修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件
    修改完后重启网络:service network restart
    9.如何用mysql 命令进行备份和恢复? 以test 库为例,创建一个备份,并再用此备份进行恢复。
    答案:mysqldump -u root -p test > test.bak
    mysql -u root -p < test.bak
    10.linux系统中如何获取pid为100的进程所监听的tcp端口,请给出详细命令?
    netstat -nlpt |grep 100
    4.Linux常用命令
    arch 显示机器的处理器架构(1) 
    uname -m 显示机器的处理器架构(2) 
    uname -r 显示正在使用的内核版本 
    dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) 
    hdparm -i /dev/hda 罗列一个磁盘的架构特性 
    hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 
    cat /proc/cpuinfo 显示CPU info的信息 
    cat /proc/interrupts 显示中断 
    cat /proc/meminfo 校验内存使用 
    cat /proc/swaps 显示哪些swap被使用 
    cat /proc/version 显示内核的版本 
    cat /proc/net/dev 显示网络适配器及统计 
    cat /proc/mounts 显示已加载的文件系统 
    lspci -tv 罗列 PCI 设备 
    lsusb -tv 显示 USB 设备 
    date 显示系统日期 
    cal 2007 显示2007年的日历表 
    date 041217002007.00 设置日期和时间 - 月日时分年.秒 
    clock -w 将时间修改保存到 BIOS

    关机 (系统的关机、重启以及登出 ) 
    shutdown -h now 关闭系统(1) 
    init 0 关闭系统(2) 
    telinit 0 关闭系统(3) 
    shutdown -h hours:minutes & 按预定时间关闭系统 
    shutdown -c 取消按预定时间关闭系统 
    shutdown -r now 重启(1) 
    reboot 重启(2) 
    logout 注销

    文件和目录 
    cd /home 进入 ‘/ home’ 目录’ 
    cd … 返回上一级目录 
    cd …/… 返回上两级目录 
    cd 进入个人的主目录 
    cd ~user1 进入个人的主目录 
    cd - 返回上次所在的目录 
    pwd 显示工作路径 
    ls 查看目录中的文件 
    ls -F 查看目录中的文件 
    ls -l 显示文件和目录的详细资料 
    ls -a 显示隐藏文件 
    ls [0-9] 显示包含数字的文件名和目录名 
    tree 显示文件和目录由根目录开始的树形结构(1) 
    lstree 显示文件和目录由根目录开始的树形结构(2) 
    mkdir dir1 创建一个叫做 ‘dir1’ 的目录’ 
    mkdir dir1 dir2 同时创建两个目录 
    mkdir -p /tmp/dir1/dir2 创建一个目录树 
    rm -f file1 删除一个叫做 ‘file1’ 的文件’ 
    rmdir dir1 删除一个叫做 ‘dir1’ 的目录’ 
    rm -rf dir1 删除一个叫做 ‘dir1’ 的目录并同时删除其内容 
    rm -rf dir1 dir2 同时删除两个目录及它们的内容 
    mv dir1 new_dir 重命名/移动 一个目录 
    cp file1 file2 复制一个文件 
    cp dir/* . 复制一个目录下的所有文件到当前工作目录 
    cp -a /tmp/dir1 . 复制一个目录到当前工作目录 
    cp -a dir1 dir2 复制一个目录 
    ln -s file1 lnk1 创建一个指向文件或目录的软链接 
    ln file1 lnk1 创建一个指向文件或目录的物理链接 
    touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm) 
    file file1 outputs the mime type of the file as text 
    iconv -l 列出已知的编码 
    iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. 
    find . -maxdepth 1 -name *.jpg -print -exec convert “{}” -resize 80x60 “thumbs/{}” ; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick)

    文件搜索 
    find / -name file1 从 ‘/’ 开始进入根文件系统搜索文件和目录 
    find / -user user1 搜索属于用户 ‘user1’ 的文件和目录 
    find /home/user1 -name *.bin 在目录 ‘/ home/user1’ 中搜索带有’.bin’ 结尾的文件 
    find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 
    find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 
    find / -name *.rpm -exec chmod 755 ‘{}’ ; 搜索以 ‘.rpm’ 结尾的文件并定义其权限 
    find / -xdev -name *.rpm 搜索以 ‘.rpm’ 结尾的文件,忽略光驱、捷盘等可移动设备 
    locate *.ps 寻找以 ‘.ps’ 结尾的文件 - 先运行 ‘updatedb’ 命令 
    whereis halt 显示一个二进制文件、源码或man的位置 
    which halt 显示一个二进制文件或可执行文件的完整路径

    挂载一个文件系统 
    mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 ‘/ mnt/hda2’ 已经存在 
    umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 ‘/ mnt/hda2’ 退出 
    fuser -km /mnt/hda2 当设备繁忙时强制卸载 
    umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用 
    mount /dev/fd0 /mnt/floppy 挂载一个软盘 
    mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom 
    mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom 
    mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom 
    mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件 
    mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统 
    mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备 
    mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享

    磁盘空间 
    df -h 显示已经挂载的分区列表 
    ls -lSr |more 以尺寸大小排列文件和目录 
    du -sh dir1 估算目录 ‘dir1’ 已经使用的磁盘空间’ 
    du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小 
    rpm -q -a --qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统) 
    dpkg-query -W -f=’ I n s t a l l e d − S i z e ; 10 t {Installed-Size;10}t InstalledSize;10t{Package}n’ | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)

    用户和群组 
    groupadd group_name 创建一个新用户组 
    groupdel group_name 删除一个用户组 
    groupmod -n new_group_name old_group_name 重命名一个用户组 
    useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 “admin” 用户组的用户 
    useradd user1 创建一个新用户 
    userdel -r user1 删除一个用户 ( ‘-r’ 排除主目录) 
    usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性 
    passwd 修改口令 
    passwd user1 修改一个用户的口令 (只允许root执行) 
    chage -E 2005-12-31 user1 设置用户口令的失效期限 
    pwck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的用户 
    grpck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的群组 
    newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组

    文件的权限 - 使用 “+” 设置权限,使用 “-” 用于取消 
    ls -lh 显示权限 
    ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示 
    chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 
    chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限 
    chown user1 file1 改变一个文件的所有人属性 
    chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性 
    chgrp group1 file1 改变文件的群组 
    chown user1:group1 file1 改变一个文件的所有人和群组属性 
    find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件 
    chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限 
    chmod u-s /bin/file1 禁用一个二进制文件的 SUID位 
    chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的 
    chmod g-s /home/public 禁用一个目录的 SGID 位 
    chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件 
    chmod o-t /home/public 禁用一个目录的 STIKY 位

    文件的特殊属性 - 使用 “+” 设置权限,使用 “-” 用于取消 
    chattr +a file1 只允许以追加方式读写文件 
    chattr +c file1 允许这个文件能被内核自动压缩/解压 
    chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件 
    chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接 
    chattr +s file1 允许一个文件被安全地删除 
    chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘 
    chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件 
    lsattr 显示特殊的属性

    打包和压缩文件 
    bunzip2 file1.bz2 解压一个叫做 'file1.bz2’的文件 
    bzip2 file1 压缩一个叫做 ‘file1’ 的文件 
    gunzip file1.gz 解压一个叫做 'file1.gz’的文件 
    gzip file1 压缩一个叫做 'file1’的文件 
    gzip -9 file1 最大程度压缩 
    rar a file1.rar test_file 创建一个叫做 ‘file1.rar’ 的包 
    rar a file1.rar file1 file2 dir1 同时压缩 ‘file1’, ‘file2’ 以及目录 ‘dir1’ 
    rar x file1.rar 解压rar包 
    unrar x file1.rar 解压rar包 
    tar -cvf archive.tar file1 创建一个非压缩的 tarball 
    tar -cvf archive.tar file1 file2 dir1 创建一个包含了 ‘file1’, ‘file2’ 以及 'dir1’的档案文件 
    tar -tf archive.tar 显示一个包中的内容 
    tar -xvf archive.tar 释放一个包 
    tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下 
    tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包 
    tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包 
    tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包 
    tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包 
    zip file1.zip file1 创建一个zip格式的压缩包 
    zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包 
    unzip file1.zip 解压一个zip格式压缩包

    RPM 包 - (Fedora, Redhat及类似系统) 
    rpm -ivh package.rpm 安装一个rpm包 
    rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告 
    rpm -U package.rpm 更新一个rpm包但不改变其配置文件 
    rpm -F package.rpm 更新一个确定已经安装的rpm包 
    rpm -e package_name.rpm 删除一个rpm包 
    rpm -qa 显示系统中所有已经安装的rpm包 
    rpm -qa | grep httpd 显示所有名称中包含 “httpd” 字样的rpm包 
    rpm -qi package_name 获取一个已安装包的特殊信息 
    rpm -qg “System Environment/Daemons” 显示一个组件的rpm包 
    rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表 
    rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表 
    rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表 
    rpm -q package_name --whatprovides 显示一个rpm包所占的体积 
    rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l 
    rpm -q package_name --changelog 显示一个rpm包的修改历史 
    rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供 
    rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表 
    rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书 
    rpm --checksig package.rpm 确认一个rpm包的完整性 
    rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性 
    rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间 
    rpm -Va 检查系统中所有已安装的rpm包- 小心使用 
    rpm -Vp package.rpm 确认一个rpm包还未安装 
    rpm2cpio package.rpm | cpio --extract --make-directories bin 从一个rpm包运行可执行文件 
    rpm -ivh /usr/src/redhat/RPMS/arch/package.rpm 从一个rpm源码安装一个构建好的包 
    rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包

    YUM 软件包升级器 - (Fedora, RedHat及类似系统) 
    yum install package_name 下载并安装一个rpm包 
    yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系 
    yum update package_name.rpm 更新当前系统中所有安装的rpm包 
    yum update package_name 更新一个rpm包 
    yum remove package_name 删除一个rpm包 
    yum list 列出当前系统中安装的所有包 
    yum search package_name 在rpm仓库中搜寻软件包 
    yum clean packages 清理rpm缓存删除下载的包 
    yum clean headers 删除所有头文件 
    yum clean all 删除所有缓存的包和头文件

    DEB 包 (Debian, Ubuntu 以及类似系统) 
    dpkg -i package.deb 安装/更新一个 deb 包 
    dpkg -r package_name 从系统删除一个 deb 包 
    dpkg -l 显示系统中所有已经安装的 deb 包 
    dpkg -l | grep httpd 显示所有名称中包含 “httpd” 字样的deb包 
    dpkg -s package_name 获得已经安装在系统中一个特殊包的信息 
    dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表 
    dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表 
    dpkg -S /bin/ping 确认所给的文件由哪个deb包提供

    APT 软件工具 (Debian, Ubuntu 以及类似系统) 
    apt-get install package_name 安装/更新一个 deb 包 
    apt-cdrom install package_name 从光盘安装/更新一个 deb 包 
    apt-get update 升级列表中的软件包 
    apt-get upgrade 升级所有已安装的软件 
    apt-get remove package_name 从系统删除一个deb包 
    apt-get check 确认依赖的软件仓库正确 
    apt-get clean 从下载的软件包中清理缓存 
    apt-cache search searched-package 返回包含所要搜索字符串的软件包名称

    查看文件内容 
    cat file1 从第一个字节开始正向查看文件的内容 
    tac file1 从最后一行开始反向查看一个文件的内容 
    more file1 查看一个长文件的内容 
    less file1 类似于 ‘more’ 命令,但是它允许在文件中和正向操作一样的反向操作 
    head -2 file1 查看一个文件的前两行 
    tail -2 file1 查看一个文件的最后两行 
    tail -f /var/log/messages 实时查看被添加到一个文件中的内容

    什么是MongoDB?
    答:mongodb是基于分布式文件存储的nosql数据库,是一种文档型数据库,适合存储

    海量数据并提高性能存取。2.mongodb三元素:
    答:数据库、集合(表)、文档(行)

    名字空间(namespace)是什么?
    答:MongoDB存储BSON对象在丛集(collection)中。数据库名字和丛集名字以句点连结起来叫做名字空间(namespace)。

    MongoDB的特点是什么?
      答:(1)面向文档(2)高性能(3)高可用(4)易扩展(5)丰富的查询语言

    MySQL与MongoDB本质之间最基本的差别是什么?
    答:mongodb的本质还是一个数据库产品,3.0以上版本其稳定性和健壮性有很大提升。它与mysql的区别在于它不会遵循一些约束,比如:sql标准、ACID属性,表结构等。其主要特性如下:
     面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;
     格式自由,数据格式不固定,生产环境下修改结构都可以不影响程序运行;
     强大的查询语句,面向对象的查询语言,基本覆盖sql语言所有能力;
     完整的索引支持,支持查询计划;
     支持复制和自动故障转移;
     支持二进制数据及大型对象(文件)的高效存储;
     使用分片集群提升系统扩展性;
     使用内存映射存储引擎,把磁盘的IO操作转换成为内存的操作;。

    各个数据库存储引擎区别?
    答:mysql的存储引擎是针对表进行设置的,一个库的不同表可以设置不同的存储引擎,mysql默认支持多种存储引擎,以适用不同领域的数据库应用需要,主要的几个数据库引擎如下:
     MyISAM存储引擎
    5.5之前默认的存储引擎,不支持事务、不支持外键,表级锁,内存和硬盘空间占用率低,其优势是访问速度快,对事务完整性没有要求,以select、insert为主的应用基本上都可以使用这个引擎;
     InnoDB存储引擎
    5.5之后默认的存储引擎,提供了具有提交、回滚和奔溃恢复能力的事务安全,支持外键并提供了行级锁,其劣势在于写的处理效率相对较低,并且会占用更多的磁盘空间以保留数据和索引;
     MEMORY存储引擎
    使用存于内存中的内容来创建表,MEMORY类型的表数据存于内存访问非常的快,默认使用HASH索引,一旦数据库服务重启或关闭,表中的数据就会丢失;
     MERGE存储引擎
    MERGE存储引擎是一组MyISAM表组合,这些MyISAM表结构完全相同。MERGE表本身没有数据,对MERGE表的CRUD操作都是通过内部的MyISAM表进行的;

    mongoDB 主要使用在什么应用场景?
     答:MongoDB 的应用已经渗透到各个领域,比如游戏、物流、电商、内容管理、社交、物联网、视频直播等,以下是几个实际的应用案例:
     游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
     物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
     社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
     物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
     视频直播,使用 MongoDB 存储用户信息、礼物信息等

    6、数据库范式?
    范式 内容
    1NF 每一列都是不可分割的基本数据项,同一列无二值;无重复的域;
    2NF 实例依赖于主键部分;
    3NF 属性不依赖于其他非主属性;
    8、什么情况下设置了索引但无法使用?
    ① 以“%”开头的LIKE语句,模糊匹配
    ② OR语句前后没有同时使用索引
    ③ 数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型
    9、数据库中的事务是什么?
    事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。ACID 四大特性,原子性、隔离性、一致性、持久性。

    了解XSS攻击吗?如何防止SQL注入?
    XSS是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的Activex控件执行恶意的行为。
    使用htmlspecialchars()函数对提交的内容进行过滤,使字符串里面的特殊符号实体化。
    防止SQL注入的方式:
    开启配置文件中的magic_quotes_gpc 和 magic_quotes_runtime设置
    执行sql语句时使用addslashes进行sql语句转换
    Sql语句书写尽量不要省略双引号和单引号。
    过滤掉sql语句中的一些关键词:update、insert、delete、select、 * 。
    提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。
    Php配置文件中设置register_globals为off,关闭全局变量注册
    控制错误信息,不要在浏览器上输出错误信息,将错误信息写到日志文件中。

    5、Ndinx与apache的区别?
    Nginx
    轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源
    抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。
    nginx 处理静态文件好,静态处理性能比 apache 高三倍以上
    nginx 的设计高度模块化,编写模块相对简单
    nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会很崩溃
    nginx 作为负载均衡服务器,支持 7 层负载均衡
    nginx 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器
    启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级
    社区活跃,各种高性能模块出品迅速
    Apache
    apache 的 rewrite 比 nginx 强大,在 rewrite 频繁的情况下,用 apache
    apache 发展到现在,模块超多,基本想到的都可以找到
    apache 更为成熟,少 bug ,nginx 的 bug 相对较多
    apache 超稳定
    apache 对 PHP 支持比较简单,nginx 需要配合其他后端用
    apache 在处理动态请求有优势,nginx 在这方面是鸡肋,一般动态请求要 apache 去做,nginx 适合静态和反向。
    apache 仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区

    展开全文
  • linux内核配置make-menuconfig菜单详解 精品文档 精品文档 收集于网络如有侵权请联系管理员删除 收集于网络如有侵权请联系管理员删除 精品文档 收集于网络如有侵权请联系管理员删除 linux 内核配置make menuconfig...
  • Linux初学者面试问题 Linux基本面试问题 1.什么是Linux? 回答:Linux是基于Linux内核的操作系统。它是一个开源操作系统,可以在不同的硬件平台上运行。它为用户提供了免费的低成本操作系统。这是一个用户友好的...

    Linux初学者面试问题

    Linux基本面试问题

    1.什么是Linux?

    回答: Linux是基于Linux内核的操作系统。它是一个开源操作系统,可以在不同的硬件平台上运行。它为用户提供了免费的低成本操作系统。这是一个用户友好的环境,他们可以在其中轻松修改和创建源代码的变体。

    2.谁发明了Linux?解释Linux的历史?

    回答:  Linus Torvalds创建了Linux。莱纳斯·托瓦尔兹(Linus Torvalds)于1991年在芬兰赫尔辛基大学(University of Helsinki)求学。他开始自行编写代码以免费获得Unix的学术版本。后来,它作为Linux Kernel变得流行。

    3. Linux和Unix有什么区别?

    回答: Linux与Unix

    LinuxUnix系统
    提供付费和免费分发。不同级别的Unix使用不同的付费结构。
    Linux主要使用带有可选命令行界面的GUIUnix使用命令行界面
    Linux OS是便携式的,可以在不同的硬盘中执行Unix OS不可移植。
    Linux由全球Linux社区开发。Unix由AT&T开发人员开发。
    Linux是免费的。它是在GNU许可下通过互联网下载的。大多数类似Unix的操作系统不是免费的。
    Linux用于家用PC,电话等。Unix用于服务器系统。

    和其他一些区别。

    Linux是Unix的克隆版本。但是,如果考虑可移植操作系统接口(POSIX)标准,则可以将Linux视为UNIX。

    • Linux只是核心

    所有Linux发行版都包括GUI系统,GNU实用程序,安装和管理工具,GNU c / c ++编译器,编辑器(vi)以及各种应用程序,例如OpenOffice,Firefox。

    UNIX操作系统被认为是完整的OS,因为一切都来自一个供应商。

    • 安全与防火墙

    Linux随附了基于Netfilter和IPTables的开源防火墙工具,可保护您的服务器和台式机免受黑客和黑客的攻击。UNIX操作系统带有自己的防火墙产品。 

    • 备份与恢复

    UNIX和Linux带有自己的一套工具,用于将数据备份到磁带和其他备份介质。但是,Linux和UNIX共享一些通用工具,例如tar,转储/还原和cpio等。

    4. Linux操作系统的核心是什么?

    回答:内核是Linux操作系统的核心。

    5.什么是Linux内核?

    回答:内核是操作系统的心脏。它充当软件和硬件之间的桥梁。如果软件请求硬件,则内核将在软件和硬件之间传递数据。例如,如果您想播放一首歌曲,则应启动默认播放器,它会请求内核播放一首歌曲,现在,内核将与硬件联系以寻求许可或寻求硬件组件,就像您插入任何耳机一样。装置。大多数Android手机使用Linux内核。 

    是的,内核可以编辑,因为它是根据通用公共许可证发行的。

    6.什么是BASH?

    回答:  Bash是Brian Fox为GNU项目编写的Unix shell和命令处理器。它是免费软件,可以代替Bourne Shell。这是一个解释后的未编译过程,也可以在终端窗口中运行。这使用户可以编写命令并引起动作。Bash能够从Shell脚本读取命令。

    7.什么是LILO?

    回答:  LILO表示Linux Loader是用于Linux操作系统的引导加载程序。大多数Linux操作系统使用LILO将操作系统引导到主内存中以启动操作。

    8.什么是CLI?

    回答:  CLI表示命令语言解释器。它与计算机程序进行交互,用户在其中以文本行的形式发出命令。它也与计算机终端交互,该界面接受文本行并将其作为命令转换为操作系统。 

    9.  开源的优势是什么?

    回答:   Linux是最早的开源技术之一,许多程序员添加了对用户完全开放的软件,这意味着您可以下载文件并随意更改代码。它为用户提供了多种选择,并提高了安全性。

    10.开源的缺点是什么?

    回答: 下面提到的开源操作系统的缺点

    1. 使用困难 
    2. 相容性问题
    3. 责任与保证
    4. 隐藏费用

    11.什么是Shell

    回答:  Shell是一个计算机程序,充当用户和内核之间的接口。用户可以通过在Shell上编写程序,命令和脚本来与内核进行通信。它接受人类可读的命令,并将其转换为内核可理解的语言。

    12. Linux中有几种类型的Shell? 

    回答:它们是Linux中的五个Shell:

    • C Shell(csh):类似于C语法,并提供拼写检查和作业控制。
    • Korn Shell(ksh):是一种高级编程语言Shell。
    • Z Shell(Zsh):它提供了一些独特的性质,例如观察登录/注销监视,文件名生成,启动文件,结束注释。 
    • Bourne Again Shell(bash):这是Linux发行版的默认设置。
    • 友好的交互式Shell(Fish):它提供基于Web的配置,自动建议等。 

    13. Linux的基本组件是什么?

    回答:   Linux的基本组件

    1. 内核:它是Linux的核心组件,它充当软件和硬件之间的接口。  
    2. Shell:它充当用户和内核之间的接口。
    3. GUI:   它代表图形用户界面,这是用户与系统交互的另一种方式。但这与图像,按钮,用于交互的文本框不同。
    4. 系统实用程序:这些是允许用户管理计算机的软件功能。
    5. 应用程序:旨在执行一组任务的一组功能。

    14.发出命令时如何打开命令提示符?

    回答:通过按CTRL + ALT + T或在菜单搜索栏中提供终端来启动终端。

    15.什么是交换空间?

    回答:当物理Ram内存用完时,将使用交换空间。它将Ram非活动页面移动到交换空间。它可以以专用交换分区或交换文件的形式考虑。

    16.什么是GUI?

    回答: GUI表示图形用户界面。它是一种人机界面,使用可以通过鼠标操作的窗口,图像,图标和菜单。电子产品中的大多数现代应用程序都通过GUI与用户通信。GUI是使用按钮,菜单,消息框等的图形和文本交互的组合。

    17.解释Linux中的文件权限类型?

    回答:每个文件或目录都具有3个权限

    他们是 

    1. Read--它是指只有他们可以读取该文件。
    2. Write--这是指他们可以写入文件或修改目录的文件。
    3. Execute--影响用户执行文件或查看目录文件的能力。 

    18.环境变量是什么?

    回答:它们是动态值,会影响计算机上程序的过程。它们存在于每个操作系统中,并且它们的类型可能有所不同。可以创建,编辑,保存和删除它们,还可以提供有关系统行为的信息。

    20.什么是符号链接? 

    回答:它将使用其路径重定向到另一个文件。目标文件不包含任何数据。符号链接重定向到文件系统中某个位置的另一个条目。如果删除了目标文件,则将删除指向该文件的链接,但不会删除该文件。

    21.什么是硬链接?

    回答:硬链接是Linux上现有文件的另一个名称。我们可以为任何文件创建如此多的硬链接。他们可以为其他硬链接创建链接。

    22.什么是重定向?

    回答:重定向可以定义为更改标准输入和输出设备。要使用重定向元字符,您可以重定向文件或程序。 

    23.什么是守护程序?

    回答:守护程序是一个后台进程,它接受来自其他计算机的服务请求,大多数操作系统使用其他形式的守护程序。  

    24.描述根帐户?

    回答: Root是用户名,默认情况下可以访问所有文件和命令。超级用户可以执行许多操作,但是普通用户不能执行诸如安装软件,更改文件权限等操作。

    25.解释虚拟桌面吗?

    回答:当您面临如何管理桌面上的多个窗口的问题时,虚拟桌面是一种用户界面,虚拟桌面可以作为替代方法。虚拟桌面存储远程服务器,并允许您在干净的状态上使用一个或多个程序。 

    26.使用vi编辑器时有哪些不同的模式?

    回答: vi编辑器中有三种模式。他们是 

    • 命令模式/常规模式
    • 插入模式/编辑模式。
    • 防爆模式/更换模式。 

    27.什么是inode和进程ID?

    回答: inode是赋予每个文件的唯一名称,进程id是赋予每个进程的唯一名称。 

    28. Linux中的进程状态是什么?

    回答:  Linux中的五个过程状态。他们是

    1. 新建/就绪:已创建一个新进程并准备运行。
    2. 正在运行:正在执行该进程。
    3. 阻止/等待:进程正在等待用户输入。 
    4. 终止/完成:进程已完成执行或被操作系统终止。 
    5. 僵尸:进程已删除,但仍在进程表中存在有关该进程的信息。

    Linux进程状态

    29.解释Linux中的流程管理系统调用吗?

    回答:  Linux中的流程管理系统调用:

    • fork():用于创建新进程。
    • exec():执行新进程。
    • wait():等到进程执行。
    • exit():退出进程。

    系统调用以获取进程ID:

    • getpid():查找唯一的进程ID。 
    • getppid():查找唯一的父进程ID。 

    30.解释Linux中的文件权限组?

    回答: 每个文件和目录都有三个基于用户的权限组。

    他们是:

    1. 所有者:所有者只需要访问文件或目录,就不会影响其他用户的操作。
    2. 组:这些权限仅适用于已分配给文件或目录的组。它们不会影响其他用户的操作。
    3. 所有用户:这些权限适用于系统上的所有用户。

    31.什么是Linux中的文件系统?

    回答: Linux文件系统存储和处理数据。没有文件系统,它将无法知道文件的起始位置和文件的结束位置。

    32.解释Linux中不同的文件系统类型吗?

     

    订阅我们的YouTube频道以获取新的更新。

     
     

    回答:在Linux中,有许多文件系统:

    Ext,Ext2,Ext3,Ext4,JFS,XFS,btrfs,ufs,autofs,devpts,ntfs和交换。

    Linux初学者教程

    Linux管理员面试问题

    32.为什么需要LVM?

    回答: LVM代表大容量管理,它是一种存储管理设备。用户可以创建,调整大小和删除LVM分区。它增加了抽象性,灵活性和控制性。LVM用于将现有存储设备收集到该组中并分配逻辑单元。 

    33.什么是umask?

    回答: unmask代表用户文件创建模式。用户创建任何文件时,它具有默认文件权限。因此,取消屏蔽将对新创建的文件指定很少的限制(它控制文件权限)。

    1个
    umask [-S] [mask]

    34.如何为用户永久设置面罩? 

    回答:如果调用unmask命令时不带任何参数,则表示它将显示当前掩码。 

    要永久设置取消遮罩,我们有两种类型。

    他们是:

    • Ocotal表示。
    • 符号表示。

    35.在Linux中什么是网络绑定?

    回答: 网络绑定是将两个以上的网络接口组合成一个网络接口的过程。它通过增加网络吞吐量和带宽来提供性能改进和冗余。无需担心一个接口关闭或拔出,因为另一个接口可以工作。绑定界面的行为取决于绑定方法。 

    36. Linux中的网络绑定有哪些不同的模式?

    答: 

    • Mode-0(balance-rr):这是默认模式,基于轮询策略。它提供容错和负载平衡功能。它使用轮询方式来传输数据包。
    • 模式1(active-backup):它基于主动备份策略,只有一个从机将在频带中起作用,而另一个将在其他从机发生故障时起作用。它还提供了容错能力。
    • 模式2(balance-xor):设置源Mac地址和目标Mac地址之间的异或模式,以提供容错能力。
    • 模式3(broadcast):它基于广播策略,并在从属接口中传输所有内容。它还提供了容错能力,并且只能用于特定目的。
    • 模式4(802.3ad):这是一种动态聚合模式,它创建了具有相同速度的聚合组。它使用传输哈希方法选择从站以进行传出流量。
    • 模式5(balance-tlb):传出流量是根据从站上的当前负载,而传入流量是从站接收的。这称为自适应发送负载平衡模式。 
    • 模式6(balance-alb):这是一种自适应负载平衡模式。它不需要任何开关支持。 

    37.如何查看默认路由和路由表?

    回答:   要显示默认路由和路由表,我们使用以下命令。

    1个
    2
    3
    4
    5
    $ route-n
     
    $ nestat-rn
     
    $ ip

    38.如何检查Linux服务器中正在侦听哪些端口?

    回答:我们有两个命令来检查Linux Server中正在侦听哪些端口。以下是两个命令 

    1个
    2
    # netstat --listen
    # netstat -l

    39.内核模块位于何处?

    回答: lib / modules / kernel-version /,此目录存储有关Linux系统下已编译驱动器的所有信息。使用lsmod命令,我们还可以看到已安装的内核模块。 

    40.如何在Linux中更改默认运行级别?

    回答:要更改Linux中的默认运行级别,请使用init命令。 

    41.如何使用nfs共享目录?

    回答:   要使用NFS共享目录,请首先编辑配置文件和'/ etc / exports'并添加目录名称' /'。现在,重新启动NFS服务。

    42. SMTP,DNS,FTP,DHCP,SSH和Squid使用的默认端口是什么?

    Ans。 详情如下

    服务端口
    SMTP25
    DNS53
    FTP20(Data Transfer) 21(Connections Established)
    DHCP68(dhcp client), 67(DHCP server)
    SSH22
    Squid3128

    43.如何在Linux中锁定用户帐户?

    回答:为了安全起见,已完成锁定用户帐户的操作,以便未经授权的用户无法登录。因此,我们有几种方法可以锁定用户帐户。其中一些在下面。 

    1. 使用passwd命令锁定或禁用密码。
    2. 使用usermod命令或chage命令使用户帐户过期。
    3. 使用nologin命令(/ sbin / nologin)更改外壳。

    Linux命令面试问题

    44.什么是ls命令及其作用?

    回答:这是Linux中的基本命令之一。它用于列出文件系统中的所有文件和目录。zom

    句法: 

    <span style =“ color:#ecf0f1; background-color:#000000;”> ls [OPTIONS] [FILES] </ span>

    我们可以在不传递参数的情况下使用它,然后它将列出当前工作目录中的所有文件。文件将按字母顺序显示。 

    <span style =“ background-color:#000000; color:#ecf0f1;”>是</ span>

    要列出特定目录文件,请在语法中使用目录名称,请按照以下语法中的说明进行操作。

    ls / etc
    我们还可以使用语法传递多个目录名称,但以空格分隔。 

    ls / etc / var / etc / passwd

     45.在Linux中,tail命令是什么?

    回答: Tail命令打印给定数据的最后N行,默认情况下它打印10行。 

    句法: 

    尾部[OPTION] ... [FILE]

    例: 

    $ cat names.txt

    Tableau <br> SQL Server <br> Linux管理<br>现在,在不提供任何选项或输入的情况下检查语法。

    $ tail state.txt

    <span style =“ font-family:'courier new',courier,monospace;”> <span style =“ color:#222222; font-family:Verdana;”> <span style =“ white-space:pre-wrap ;“> <strong> <em>输出:</ em> </ strong> <br> </ span> </ span> </ span> Tableau <br> sql server <br> linux管理<span style =” font-family:'courier new',courier,monospace;“> <span style =” color:#222222; font-family:Verdana;“> <span style =” white-space:pre-wrap;“> <br > </ span> </ span> </ span>

    46. Linux中的grep命令是什么?

    回答: grep命令是一个过滤器,用于全局搜索正则表达式。

    句法:

    grep [选项]模式[文件]

    47. Linux中的ps命令是什么? 

    回答: ps命令显示系统的当前进程状态。并显示进程ID和其他一些相关数据。 

     

    句法: 

    Ps [选项]

    输出:

    1个
    2
    3
    4
    5
    6
    7
    [root@rhe17~]# ps
     
    PID TTY    TIME CMD
     
    12330 pts/0  00:00:00 bash
     
    21621 pts/0  00:00:00 ps

    如:ps -ef|grep tomcat (查询tomcat进程)

    48. Linux中的env命令是什么?

    回答: env是一个shell命令,用于打印当前环境变量的列表,它可以在另一个环境中运行另一个进程,而无需对当前环境进行任何修改。 

    1个
    env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

    选件

    标签描述
    -i,-ignore-environment从一个空的环境开始。
    -0,--null输出行以0(空)字节而不是换行符结尾。
    -u,--unset = NAME从环境中删除变量NAME
    --help显示帮助消息并退出。

    49.什么是Linux中的top命令?

    回答:用于显示系统进程的top命令,它显示并更新排序的进程信息。 

    50. Linux中的netstat命令是什么?

    回答: netstat命令提供有关网络和路由表,接口静态信息以及有关系统的更多信息。

    51. 在Linux中,lsof命令是什么?

    回答: lsof表示文件列表,我们可以知道哪个进程打开了哪个文件。

    1个
    2
    #lsof
    -

    52.解释chmod命令吗?

    回答:此命令用于更改文件和目录的权限。这是一个重要的命令,因此,我将对其进行简要说明。因此,总的来说,共有三种权限,即读,写和执行,并由数字表示,如下所示。

    1. 4-读取权限
    2. 2-写入权限
    3. 1-执行权限

    句法:

    1个
    2
    3
    4
    5
    6
    7
    $ chmod options permissions file name 
     
    $ chmod [OPTION]... MODE[,MODE]... FILE...
     
    $ chmod [OPTION]... OCTAL-MODE FILE...
     
    $ chmod [OPTION]... --reference=RFILE FILE…

    53.解释chown命令吗?

    回答: Chown命令:命令“ chown”代表变更文件的所有者和组。此命令用于更改指定用户或组的一个或多个文件或文件夹的所有权。 

    句法:

    1个
    2
    3
    4
    $ chown [OPTION]… [OWNER][:[GROUP]] FILE…
                                    Or
     
      $ chown [OPTION]… –reference=RFILE FILE…

    54.在Linux中什么是cp命令?

    回答: cp命令: cp命令用于复制文件和目录。它还用于备份文件或目录。

    句法:

    $ cp文件名

    55.如何在Linux中从系统中删除文件或目录?

    回答:  rm命令:rm命令用于删除命令行上指定的目录或文件。删除任何文件或目录时,请务必小心。

    句法:

    rm文件名- 

    命令描述
    rm文件名删除单个文件。
    rm filename1,filename2,filename 3删除多个文件。
     rm * .pdf删除当前目录中的所有pdf文件。 
     rm -i 文件名-i表示在删除文件之前先进行确认
     rm -i 文件名删除文件而不提示
    rm -fv * .txt删除当前目录中的所有.txt文件而不提示

    56. Linux中的mkdir是什么?

    回答: mkdir,命令允许用户在Linux中创建目录。用户可以一次创建多个目录,并可以设置目录的权限。

    句法: 

    mkdir [选项...] [目录...]

    选项描述
    Directory要创建的目录的名称
    -m=mode, --mode=mode为创建的目录设置文件模式(权限等)
    -p, --parents创建父目录
    --v,--verbose详细输出。打印已创建目录的消息。
    --Z= context, --context=context如果使用的是SELinux,则此选项将每个创建的目录的安全性上下文设置为context。
    --help显示帮助消息并退出
    --version它显示版本信息并退出

    57.在Linux中解释rmdir命令?

    回答:  rmdir用于删除命令行上指定的每个目录。 

    句法: 

    1个
    rmdir [-p] [-v | –verbose] [–ignore-fail-on-non-empty] directories

    58.如何退出vi编辑器?

    回答:我们可以使用两个命令退出vi编辑器。他们是

    • Wq  wq命令保存当前工作并从vi编辑器退出。
    • q!: q!命令不会保存当前的工作,但是会从vi编辑器中退出。

    59.如何从vi中的文件中删除信息?

    回答: 以下命令用于在vi编辑器中从文件中删除信息。

    1. 命令x删除当前字符。
    2. 命令dd删除当前行。

    60.征募一些Linux文件内容命令?

    回答:文件内容命令

    1. head:显示文件的顶行。
    2. tail:显示文件的最后几行。
    3. cat:串联两个以上的文件。
    4. 更多:以寻呼机形式显示内容以在终端中查看。 

    Linux技术面试常见问题解答

    61.招募一些Linux发行商(Distros)及其用法?

    回答:我们有很多Linux发行商,其中,我们讨论了一些重要的发行商。

    • Linux Mint:稳定且强大。Linux Mint使用伴侣桌面和肉桂。 
    • Debian:它代表了健壮性,稳定性和上油良好的发布周期。这是用户友好的。Debian版本8将被版本9取代。
    • Ubuntu:它基于Debian,适用于台式机和服务器版本。  
    • openSUSE:对于新用户和现有用户来说,这是一个不错的选择。
    • Manjaro:它为新手和有经验的用户提供了愉快的体验。

    62.为什么我们使用LINUX? 

    回答: 我们有很多原因,其中列出了几个重要的原因。以下是

    • 高稳定性:非常稳定,不会导致崩溃,它可以像首次安装时一样快速运行。 
    • 安全性:这是一台可靠的服务器,可以为用户提供高安全性。在系统上使用Linux很容易避免病毒和恶意软件。攻击者无法更改系统中的任何更改,除非该用户以root用户身份登录。
    • 易于操作: Linux易于操作,并且我们可以轻松地安装到系统上,因为Linux的所有变体都有自己的软件存储库。您可以单击几次以定期更新系统,也可以设置自动更新。
    • 硬件兼容性: Linux可以在任何硬件上使用,它没有任何硬件限制。它有效地使用了所有系统资源。
    • 开源:源代码可用,因为它位于免费和开源软件(FOSS)下。ç¨äºlinuxæä½ç³»ç»

     

     

    63. Linux操作系统有哪些功能?

    回答:以下是Linux操作系统的功能

    • 可移植性:软件可以相同的方式在不同类型的硬件上运行。它可以随身携带笔式驱动器和存储卡。
    • 开源:免费提供源代码及其基于社区的开发项目。 
    • 多用户:多个用户可以同时使用ram,应用程序和运行程序。 
    • 多重编程多个程序或应用程序可以同时运行。 
    • Shell:它具有特殊的解释程序,您可以在其中执行系统的程序和命令。 
    • 安全性:它提供身份验证,授权和加密,以提供数据的安全性。 

    64.区分BASH和DOS?

    答: 

    重击多斯
    命令区分大小写命令不区分大小写
    反斜杠(/)表示目录分隔符'/'代表命令参数
    正斜杠“”表示转义字符''代表目录分隔符
    不遵循文件中的约定命名  遵循文件中的命名约定

    65.内部命令和外部命令是什么意思?

    答: 

    • 内部命令:直接由外壳运行的命令称为内部命令,没有单独的进程来运行命令。 
    • 外部命令: 内核运行的命令称为外部命令,每个命令都有其自己唯一的进程ID。

    Linux网络面试问题

    66. Linux中的PIPE是什么意思?

     
     

    回答:这是一种重定向形式,在Linux中使用,用于组合两个以上的命令,一个命令的输出可以作为下一个命令的输入。 

    句法:

    1个
    command_1 | command_2 | command_3 | .... | command_N

    67.描述父子进程如何相互通信?

    回答: 父进程通过使用管道,套接字,消息队列等与子进程进行通信。 

    68.什么是无状态Linux服务器?

    回答:这是一台集中式服务器,在工作站上没有任何存在状态。当特定系统的状态拍摄快照时,用户可能希望所有其他计算机都处于该特定状态,因此可能会出现这种情况。

    69.解释无状态Linux服务器的功能吗?

    答: 

    1. 存储每个系统的原型。
    2. 存储拍摄的快照。 
    3. 存储主目录。
    4. 使用LDAP,其中包含有关哪个快照应在哪个系统上运行的信息。 

    70.什么是僵尸进程?

    回答: 这是一个执行已完成但进程表中甚至存在信息的进程。由于子进程需要读取子进程的状态,因此发生在子进程中。一旦使用wait系统调用完成了该任务,则僵尸进程将从进程表中删除。这被称为僵尸进程。

    71.解释Ctrl + Alt + Del组合键在Linux操作系统上的工作吗?

    回答: 在Linux中,Ctrl + Alt + Del键用于重新启动计算机,并且在重新引导系统之前它不会显示任何确认消息。 

    72.为什么Linux被认为比其他操作系统更安全?

    回答:   Linux是一种开源操作系统,如今它在技术市场中正在迅速增长。我们有几个理由说明Linux比其他操作系统更安全的原因。

    • 帐户特权: Linux仅允许少数用户访问系统。因此,该病毒无法攻击整个系统,它可能仅导致系统中的几个文件。 
    • 强大的社区: Linux用户在打开文件之前首先完成了文件。这样他们就可以避免系统遭受漏洞攻击。 
    • iptables: Linux使用的iptables,因为它检查系统的安全圈。 
    • 不同的工作环境: Linux系统具有不同的工作环境,例如Linux Mint,Debian,Arch等,这些工作环境可以防御病毒。
    • 在Linux中记录:它维护日志历史记录,因为以后可以轻松查看系统文件的详细信息。 
    • 很少的用户: Linux用户比其他用户少,因为这种安全性会更多。

    73.在Linux中,tail命令是什么?

    回答: tail命令显示文件的最后部分。通常,用户不需要每个日志行即可进行故障排除。相反,您想查看日志中有关应用程序最近请求的内容。

    尾例:

    $ tail -n 100 / var / log / httpd / access_log

    74.在Linux中什么是cat命令?

    回答:  在Linux中,cat命令连接并打印文件。用户可能发出cat检查您的依赖项文件的内容或确认您已经在本地构建的应用程序的版本。

    猫示例:

    1个
    2
    3
    $ cat requirements.txt
    flask
    flask_pymongo
     
    重要的Linux命令

     

    75. Linux中的grep命令是什么?

    回答:  grep搜索文件模式。如果要在另一个命令的输出中查找特定模式,则grep突出显示相关行。使用此grep命令搜索日志文件,特定进程等。

    grep示例: 

    1个
    2
    $ cat tomcat.log | grep org.apache.catalina.startup.Catalina.start
    12-Jan-2018 17:08:35.542 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 681 ms

    76. Linux中的ps命令是什么?

    回答:  ps命令显示进程状态。使用此ps命令来确定正在运行的应用程序或确认预期的进程。

    ps命令示例:

    1个
    2
    3
    $ ps -ef
     
    $ ps -ef | grep tomcat

    77.在Linux中什么是env命令?

    Ans:  env命令允许用户设置或打印环境变量。在故障排除期间,用户会发现它对于检查错误的环境变量是否阻止您的应用程序启动很有用。

    env命令示例:

    1个
    2
    3
    4
    5
    6
    7
    8
    9
    $ env
    PYTHON_PIP_VERSION=9.0.1
    HOME=/root
    DB_NAME=test
    PATH=/usr/local/bin:/usr/local/sbin
    LANG=C.UTF-8
    PYTHON_VERSION=3.4.6
    PWD=/
    DB_URI=mongodb://database:27017/test

    78.什么是Linux中的top命令?

    回答:  top命令显示和更新排序的过程信息。使用此top命令来确定正在运行的进程以及它们消耗了多少内存和CPU。

    79. Linux中的netstat命令是什么?

    回答:  Linux中的netstat命令显示网络状态。此netstat命令显示正在使用的网络端口及其传入连接。

    80.在Linux中,lsof命令是什么?

    回答:命令ls列出了与您的应用程序关联的打开文件。

    81.在Linux中df命令是什么?

    回答:  用户可以使用df命令对磁盘空间问题进行故障排除。此处df表示显示可用磁盘空间。

    df命令示例:

    df -h

    82.在Linux中du命令是什么?

    Linux中的Ans: du命令用于检索有关哪些文件使用目录中磁盘空间的更多详细信息。

    du命令示例:

    1个
    2
    3
    4
    5
    6
    7
    8
    $ du -sh /var/log/*
    1.8M  /var/log/anaconda
    384K  /var/log/audit
    4.0K  /var/log/boot.log
    0 /var/log/chrony
    4.0K  /var/log/cron
    4.0K  /var/log/maillog
    64K /var/log/messages

    83.在Linux中什么是iptables命令?

    回答:  iptables命令阻止或允许Linux主机上的流量,类似于网络防火墙。此iptables命令可能会阻止某些应用程序接收或传输请求。

    Linux与Windows

    LINUX视窗
    Linux是  免费提供的必须购买Windows
    这是  一个开源操作系统它不是开源操作系统
    一个可以定制Linux没有自定义项
    提供高级安全性无法防御病毒和恶意软件攻击
    主分区和逻辑分区可启动仅在主分区时可以启动
    BackSlash分隔目录正斜杠分隔目录
    文件名区分大小写命名文件时不分大小写
     

    84. cd-命令做什么?

    回答:  cd-命令转到上一个目录。

    85. cd命令有什么作用?

    回答:  转到$ HOME目录

    86.(cd dir &&命令)做什么?

    回答:  cd dir &&命令转到dir,执行命令并返回当前目录。

    88. pushed命令有什么作用?

    回答:推送命令将当前目录放到堆栈上,以便您可以弹出它。

    Linux管理员面试问题

    89.什么是ls -lSr命令?

    回答:  ls-ISr命令按大小显示文件,最后显示最大文件。

    90.什么是du -s * | 排序-k1,1rn | 头命令用于?

    回答:  该命令显示当前目录中的顶级磁盘用户。

    91. du -hs / home / * |是什么?sort -k1,1h命令吗?

    回答:  此命令排序路径通过易于解释磁盘使用情况来实现。

    92.什么是df -h命令?

    回答:此命令显示已挂载文件系统上的可用空间。

    93.什么是df -i命令?

    回答: df -I命令显示已挂载文件系统上的空闲索引节点。

    94. fdisk -l命令的作用是什么?

    回答:  fdisk -I命令显示磁盘分区的大小和类型(以root身份运行)。

     查看Linux示例简历

    95.如何在Linux中使用一个端口杀死程序?

    回答: 使用此命令可以通过一个端口杀死程序:sudo fuser -k 8000 / tcp

    96.如何限制命令的内存使用量?

    回答:  ulimit -Sv 1000#1000 KBs = 1 MB
        ulimit -Sv unlimited#删除限制

    97.如何在Linux中获得文件的完整路径?

    <strong style =“ font-family:-apple-system,BlinkMacSystemFont,“ Segoe UI”,Roboto,Oxygen,Ubuntu,Cantarell,“ Open Sans”,“ Helvetica Neue”,sans-serif;颜色:#e74c3c;”>回答:</ strong>:使用以下命令:readlink -f file.txt

    98.如何列出tar.gz的内容并仅提取一个文件?

    回答:  使用以下命令:

    • tar tf file.tgz
    • tar xf file.tgz文件名

    99.您如何找到谁登录?

    回答:  使用此命令可查找登录人员:w

    100.如何检查每个目录对文件的权限?

    回答:  检测权限错误很有用,例如在配置Web服务器时。

    1个
    namei -l /path/to/file.txt

    101.每次修改文件时如何运行命令?

    回答:  使用此命令可以执行以下操作:

    1个
    2
    3
    4
    5
    6
    7
    while inotifywait -e close_write document.tex
     
    do
     
    make
     
    done

    102.如何将文本复制到剪贴板?

    回答:使用此命令:cat file.txt | xclip-选择剪贴板

    103.您如何检查资源使用情况?

    回答:使用此命令检查资源使用情况:/ usr / bin / time -v ls

    104.如何在有限的时间内运行命令?

    回答:使用此命令:超时10秒./script.sh

    #设置为
    true时每30分钟重新启动一次;超时30m ./script.sh; 完成

    105.如何在Linux中将两个已排序文件中的两行合并?

    回答:使用此命令:comm file1 file2。

    展开全文
  • linux下包管理器

    千次阅读 2018-10-28 22:41:34
    一、操作linux发型版本的包管理器 此小结摘抄:https://www.cnblogs.com/linuxprobe/p/5883783.html   在 linux 中,包管理器非常重要,了解如何使用多种包管理器可以让你像一个高手一样活得很舒适,从在仓库下载...

    一、操作linux发型版本的包管理器

    此小结摘抄:
    https://www.cnblogs.com/linuxprobe/p/5883783.html
     
      在 linux 中,包管理器非常重要,了解如何使用多种包管理器可以让你像一个高手一样活得很舒适,从在仓库下载软件、安装软件,到更新软件、处理依赖和删除软件是非常重要的,这也是Linux 系统管理的一个重要部分。

    • debian派系

      dpkg 是 Debian Linux 家族的基础包管理系统,它用于安装、删除、存储和提供deb包的信息。
    这是一个低层面的工具,并且有多个前端工具可以帮助用户从远程的仓库获取包,或处理复杂的包关系的工具,包括如下:

    (1) apt(高级打包工具)
      这个是一个 dpkg 包管理系统的前端工具,它是一个非常受欢迎的、自由而强大的,有用的命令行包管理器系统。debian 及其衍生版,例如 Ubuntu 和 Linux Mint 的用户应该非常熟悉这个包管理工具。
    (2) aptitude 包管理器
      这个也是 Debian Linux 家族一个非常出名的命令行前端包管理工具,它工作方式类似 APT ,它们之间有很多可以比较的地方,不过,你应该两个都试试才知道哪个工作的更好。它最初为 Debian 及其衍生版设计的,但是现在它的功能延伸到 RHEL 家族。
    (3) synaptic 包管理器
      synaptic是一个基于GTK+的APT的可视化包管理器,对于一些不想使用命令行的用户,它非常好用。

    • 红帽派系

    rpm 包管理器
      这个是红帽创建的 Linux 基本标准(LSB)打包格式和基础包管理系统。基于这个底层系统,有多个前端包管理工具可供你使用,但我们应该只看那些最好的,那就是:

    (1) yum
      这个是一个开源、流行的命令行包管理器,它是用户使用 RPM 的界面(之一)。你可以把它和 Debian Linux 系统中的 APT 进行对比,它和 APT 拥有相同的功能。

    (2) dnf
      这个也是一个用于基于 RPM 的发行版的包管理器,Fedora 18 引入了它,它是下一代 YUM。如果你用 Fedora 22 及更新版本,你肯定知道它是默认的包管理器。这里有一些链接,将为你提供更多关于 DNF 的信息和如何使用它。

    • 其他派系

    (1) Pacman包管理器(Arch Linux)
      这个是一个流行的、强大而易用的包管理器,它用于 Arch Linux 和其他的一些小众发行版。它提供了一些其他包管理器提供的基本功能,包括安装、自动解决依赖关系、升级、卸载和降级软件。但是最大的用处是,它为 Arch 用户创建了一个简单易用的包管理方式。

    (2) Zypper 包管理器(openSUSE)
      这个是一个使用 libzypp 库制作的用于 OpenSUSE 系统上的命令行包管理器,它的常用功能包括访问仓库、安装包、解决依赖问题和其他功能。更重要的是,它也可以支持存储库扩展功能,如模式、补丁和产品。

    (3) Portage 包管理器(Gentoo)
      这个是 Gentoo 的包管理器,当下不怎么流行的一个发行版,但是这并不阻止它成为 Linux 下最好的软件包管理器之一。Portage 项目的主要目标是创建一个简单、无故障的包管理系统,包含向后兼容、自动化等功能。

    二、rpm包管理器

    2.1、程序概述以及rpm概述

    API:Application Program Interface,应用程序接口;
    ABI:Application Binary Interface,应用二进制接口;
    
    至于二者的区别,之前也有讲过,这里拿一张别人画好的图:

    https://blog.csdn.net/FatalError1/article/details/78362829
    linux下包管理器

    • C/C++程序格式
      源代码:文本格式的程序代码;
      编译开发环境:编译器、头文件、开发库
      二进制格式:文本格式的程序代码 - -> 编译器 - -> 二进制格式(二进制程序、库文件、配置文件、帮助文件)
    • java/python程序格式
      源代码:编译成能够在其虚拟机(jvm/pvm)运行的格式;
      开发环境:编译器、开发库
      二进制
    • 项目构建工具

      c/c++: make
      java: maven
    • 源代码格式和二进制rpm包格式
    源代码命名:name-VERSION-release.tar.gz 
    .tar.gz只是一种,通常是使用tar打包归档,并使用gzip压缩;
    VERSION:major.minor.release(主版本号.次版本号.发型号);
    name:源代码所代表的应用程序的名字;
    例如:redis-5.0.0.tar.gz
    
    rpm包命名:
    name-VERSION-release.arch.rpm
    VERSION:major.minor.release(软件包主版本号.次版本号.发型号);
    release.arch:rpm包的发型号;
    其中的release由release.os组成,(release表示发型号的版本,os表示系统说明)
    arch可选值有:i386, x64(amd64), ppc, noarch等等
    
    例如:redis-5.0.0-1.centos7.x64.rpm
    
    • rpm概述
    rpm是一款能够用于编译,安装,查询,验证,更新以及移除软件包的包管理器。包由文件和元数据构成。
    元数据构成:
    二进制程序文件,库文件,配置文件,帮助文件等;
    
    包的两种形式,上面有提到过,一种是二进制包格式,另外一种是源码包格式。
    二进制包已经封装好了要安装的程序,源码包就是由程序源代码以及要生成二进制格式的一些附加配置构成;
    
    rpm包就是由二进制格式组成的,不过为了最小化功能模块设计,一个应用程序被打包成rpm包的时候,可能
    组成了不止一个rpm包,比如像mysql这种的应用程序,可能由devel,utils,libs等组成各个小包,我们称这些
    为分包或支包,如果要想完整的使用应用程序,我们应该先安装对应程序的主包,然后把这些辅助的支包也安装
    上。主包和支包(这种机制叫拆包)命名:
    主包:name-VERSION-release.arch.rpm 
    支包:name-function-VERSION-release.arch.rpm
    其中function表示一类辅助功能,常见的有:
    devel,utils,libs等
    
    rpm管理器有个弊端就是不能自动解决程序包依赖关系的问题,何为依赖关系:
    比如我要安装X,Y,Z程序包,安装X程序包要依赖于Y和Z程序包,而安装Y程序包要依赖于A,B,C程序包,
    然后安装A程序要依赖于Y程序包,依赖我的Y程序包还没安装,而后Y程序包要装的软件包又依赖
    于Y程序包本身,这种是很常见的,在rpm管理器中没能得到解决,我们只能找出依赖,先把依赖包安装好,
    然后运气好的话,没有这种互相关联,我们可以解决,如果是互相关联的,就没有办法了。而rpm包的前端
    工具,例如yum,就很好的解决了软件包依赖的关系。
    
    程序包管理器的功能(例如rpm):
    将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、
    卸载和查询等管理操作;
    1、程序包的组成清单(每个程序包都单独实现);
        文件清单
        安装或卸载时运行的脚本
    2、数据库(公共)
        程序包的名称和版本;
        依赖关系;
        功能说明;
        安装生成的各文件的文件路径及校验码信息;
        等等等
    
    获取程序包的途径:
    1、系统发行版的光盘或官方的文件服务器(或镜像站点):
    http://mirrors.aliyun.com 这是是国内阿里云提供的公共镜像站点;
    http://mirrors.sohu.com   这是国内搜狐提供的公共镜像站点;
    http://mirrors.163.com     这是163组织提供的公共镜像站点;  
    2、项目的官方站点
    3、第三方组织:
        (1) EPEL
        (2) 搜索引擎
            http://pkgs.org
            http://rpmfind.net 
            http://rpm.pbone.net 
    4、自己部署搭建镜像站点或者主机打包rpm包
    
    建议:检查其合法性
        来源合法性;
        程序包的完整性;
    

    2.2、rpm常见选项

    rpm简单组织语法格式:

    rpm [OPTION] [PACKAGE_FILE]
    其中OPTION根据rpm实现的每种功能,有分别的主选项,例如:
    查询:-q或-query
    校验:-V或--verify
    安装:-i或--install
    升级:U或--upgrade,-F或--freshen
    卸载:-e或--erase

    2.2.1、rpm的通用选项

    -?, --help:查看帮助信息;
    --version:查看版本;
    --quiet:安静模式;
    -v:详细信息;
    -vv:更详细的输出;

    2.2.2、rpm与安装相关的选项

    语法格式:
    rpm {-i|--install} [install-options] PACKAGE_FILE ...
    其中-i或--install表示安装功能主选项;
    install-options表示安装的子选项;
    
    -h, --hash:hash marks输出进度条;每个#表示2%的进度;
    --test:测试安装,检查并报告依赖关系及冲突消息等;
    --nodeps:忽略软件包的依赖关系(正常情况不应该忽略);
    --replacepkgs:重新安装;
    --replacefiles:如果其他程序安装过相应文件,会覆盖安装;
    --oldpackage:允许降级安装软件包;
    --force:--replacepkgs, --replacefiles, and --oldpackage的组合;
    
    PS:rpm包安装,可以附带四类安装脚本,分别为:
    preinstall:安装过程开始之前运行的脚本,%pre
    postinstall:安装过程完成之后运行的脚本,%post
    preuninstall:卸载过程真正开始执行之前运行的脚本,%preun
    postuninstall:卸载过程完成之后运行的脚本,%postun
    
    --nopre:不执行"安装过程开始之前要运行的脚本片段";
    --nopost:不执行"安装过程完成之后运行的脚本片段";
    --nopreun:不执行"卸载过程开始执行之前运行的脚本片段";
    --nopostun:不执行"卸载过程完成之后运行的脚本片段";
    --noscripts:相当于--nopre --nopost --nopreun --nopostun
    --nodigest:不检查包完整性信息;
    --nosignature:不检查包签名信息,不检查来源合法性;
    --justdb:只安装数据库,不包安装安装文件系统的文件;(通过查询选项还是可以列出安装的文件,不过
    实际并不存在,卸载的时候也要加上该选项);
    
    PS:安装的时候,rpm的数据库没有记录软件包的相关记录,应该指明完整的rpm包名;

    2.2.3、rpm与升级相关的选项

    语法格式:
    rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
    这个-U是升级或安装,如果已经安装了且存在新版本,会移除旧版本并升级成新版本,简称升级或安装软件包;
    
    rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
    这个-F只升级软件包,如果指定软件包没有安装,不会安装;
    
    至于升级的选项,很多与安装的选项相同
    --justdb:只安装数据库,不包安装安装文件系统的文件;(通过查询选项还是可以列出安装的文件,不过
    实际并不存在,卸载的时候也要加上该选项);
    --force:强制,相当于--replacepkgs, --replacefiles, and --oldpackage;
    --oldpackage:降级;
    等等,其他选项,请看上一小结。
    
    注意事项:
    (1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;
    (2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有
    版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
    

    2.2.4、rpm与卸载相关的选项

    语法结构:
    rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
    --allmatches:指定软件包如果有多个版本,会卸载掉多有的版本(正常情况如果有多个版本存在,卸载检测
    出来,会报错);
    --nodeps:卸载软件包前不检查依赖关系;
    --test :测试卸载,不真正执行;
    --nopreun:不执行"卸载过程开始执行之前运行的脚本片段";
    --nopostun:不执行"卸载过程完成之后运行的脚本片段";
    --noscripts:等价于 --nopreun --nopostun;
    
    PS:卸载的时候,不能指明完整的包名,只需要指定要卸载的软件包的名字即可。

    2.2.5、rpm与查询相关的选项(最核心之一)

    语法格式:
    rpm {-q|--query} [select-options] [query-options]
    
    select-options:
    -a, --all:查询所有已经安装过的软件包;
    -f, --file FILE:查询指定文件由哪一个软件包提供;
    -g, --group GROUP:查询指定开发包组中对应程序包,系统已经安装的有哪些;
    -p, --package PACKAGE_FILE:用于实现对未安装的程序包进行查询操作;
    --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供
    --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
    
    query-options:
    --changelog:查询软件包的改变信息;
    -l, --list:查询软件包安装生成的所有文件列表;
    -i, --info:查询程序包的相关信息,包括名字,版本号,大小,所属包组,描述信息等;
    -c, --configfiles:查询软件包提供的配置文件列表;(已经隐式含有-l,不用显式再指明-l选项)
    -d, --docfiles:查询软件包提供的文本文件列表;(已经隐式含有-l,不用显式再指明-l选项)
    --dump:导出(打印)软件包的以下部分的详细信息(隐式含有-l选项)
    path size mtime digest mode owner group isconfig isdoc rdev symlink
    路径 大小 修改事件 摘要码 权限 文件属主 文件属组 是否为配置文件 是否为文件文件, 设备相关,链接相关
    --filesbypkg:查询所有指定软件包的安装的文件列表(每个文件前边会有软件包名,再查找多个软件包的文件列表
    的时候可便于区分);
    -i, --info:查询程序包的相关信息,包括名字,版本号,大小,所属包组,描述信息等;
    -L, --licensefiles:查询软件包的许可证信息;
    --provides:查询软件包的CAPABILITY(能力);
    -R, --requires:查询指定软件包的依赖能力关系(这里的依赖关系不一定到一个软件包,因为能力是一种体现,
    一个软件包可以有多个能力);
    --scripts:查询软件包自带的脚本片段;
    

    2.2.6、rpm与校验相关的选项

    语法结构:
    rpm {-V|--verify} [select-options] [verify-options]
    select-options和查询的select-options相同;
    
    verify-options:
    --nodeps:校验的时候不检查软件包的依赖关系;
    --nodigest:校验的时候不检查包完整性;
    --nosignature:校验的时候不检查包签名信息和来源合法性;
    
    输出格式由9个字符组成的字符串,可能用来标识的属性有:
    c %config configuration file. 配置文件
    d %doc documentation file. 文档文件;
    g %ghost file (i.e. the file contents are not included in the package payload).
    l %license license file.: 许可证文件
    r %readme readme file. 说明文件
    
    字符构成:
    如果对应字符位置标记为符号"."表示校验通过,没有异常,如果为符号"?",表示检测异常,可能因为没有权限等
    原因造成,如果标记为以下字符表示对应属性检测失败(软件包本身属性不变,如果有修改,对应字段会作出
    相应的标记,不是所检测不同就表示有问题,只能说与元件包原始提供的检测不一样):
    S file Size differs    标记为S表示文件大小不同;
    M Mode differs (includes permissions and file type) 标记为M表示权限不同(包括权限和文件类型)
    5 digest (formerly MD5 sum) differs 标记为5 表示消息摘要码不一样;
    D Device major/minor number mismatch 标记为D表示主设备号或次设备号不匹配;
    L readLink(2) path mismatch 标记为L表示路径不匹配;
    U User ownership differs 标记为U表示文件的属主不同;
    G Group ownership differs 标记为G表示文件的属组不同;
    T mTime differs 标记为T表示文件的修改时间不同;
    P caPabilities differ 标记为P表示软件包提供的能力检测不同;
    
    包来源合法性验证和完整性验证:
        来源合法性验正:
        完整性验正:
    
    获取并导入信任的包制作者的密钥:
        对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    验证:
        (1) 安装此组织签名的程序时,会自动执行验正;
        (2) 手动验证:rpm -K PACKAGE_FILE
    
    PS:校验rpm软件包也不能带上rpm的全路径,只需要指明rpm包的名字即可;

    2.2.7、rpm与数据库维护相关

    数据库重建:
        rpm管理器数据库路径:/var/lib/rpm/
        查询操作:通过的rpm的数据库进行;
    
    获取帮助:
        CentOS 6:man rpm
        CentOS 7:man rpmdb
    
    rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
        --initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
        --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

    2.3、实际案例

    本小结主要以光盘中的一个名叫zsh的软件包进行演示操作说明。
    1、查询
    linux下包管理器

    linux下包管理器

    linux下包管理器

    2、安装和升级安装,卸载

    linux下包管理器

    3、校验和数据库维护

    linux下包管理器

    linux下包管理器

    学完rpm,记得把这个链接的10多个常见问题看一下,非常有用:
    http://fedoranews.org/alex/tutorial/rpm/

    Problem 1: Install or Upgrade a package? Can I install an old one?
    Problem 2: Remove a package? Is it going to remove any dependencies?
    Problem 3: Query installed packages? What about a RPM file?
    Problem 4: List what packages are required by some RPM package?
    Problem 5: Find from which package the file /usr/bin/smbmount belongs?
    Problem 6: List what files will be installed by a RPM package?
    Problem 7: Install a package directly from Internet? Can I use a proxy?
    Problem 8: Simulate what will be done when executing "rpm -ivh new-kernel.rpm"?
    Problem 9: Upgrade all my installed packages with one Freshen command?
    Problem 10: Figure out the Kernel version(smp, bigmem) and base arch(i386, athlon)?
    Problem 11: Install a new Kernel version but keeping my old one installed?
    Problem 12: Make backups of my old packages when updating or removing them?
    Problem 13: Build a RPM package from a SRPM with rpmbuild?
    Problem 14: Check digests and signatures against a package?
    Problem 15: See what RPM macros are defined on my system?
    Problem 16: Get rpm back? The command "rpm -qa" returns nothing!
    Problem 17: Figure out the installation time of my packages? [User Contribution]
    Problem 18: Figure out the size of a installed package? [User Contribution]
    
    1、安装和升级软件包,我可以使用旧软件包吗?
    2、如何卸载软件包,会卸载掉依赖文件吗?
    3、查询已经安装的软件包,以及rpm的安装文件信息?
    4、列出依赖于rpm包的包以及文件?
    5、查找某个程序文件属于哪一个软件包?(比如查询/usr/bin/smbmount输出哪个软件包)
    6、列出rpm软件包将要安装的文件?
    7、如何直接从互联网安装一个软件包?我可以使用代理吗?(例如使用ftp协议或者http协议)
    8、如何模拟安装一个软件包?
    9、如何一次升级所有已经安装过的软件包?
    10、如何查询自己的内核版本以及系统体系架构?
    11、安装一个新的内容版本并且保留之前已经安装过的旧版本?
    12、在升级或卸载软件包的时候,如果备份软件包?
    13、使用rpmbuild工具从SRPM格式构建出对应的RPM包?(这个涉及到rpm包的制作知识点,有兴趣可以查阅)
    14、如何检验包的完整性和来源合法性?
    15、查看我的系统定义的和RPM包相关的宏有哪些?(这个涉及到rpm包的制作知识点,有兴趣可以查阅)
    16、有时候"rpm -qa"查询不出东西,怎么处理?
    17、如何计算包的安装时间?(这个是用户提交的,非官方)
    18、如何计算出已经安装包的大小?(这个是用户提交的,非官方)

    三、rpm包管理器的前端工具yum

    3.1、yum概述

    yum是一个交互式的基于rpm实现的包管理器。它可以自动执行系统的更新,包括依赖性分析以及基于"仓库(repository)"的元数据库过时的处理。它也能够实现安装(新)软件包,卸载(旧)软件包以及对已经安装的软件包的查询,或者向其他命令或程序提供可用的软件包。yum和其他高级的软件包管理工具是相似的,例如像apt-get或smart。

    yum可以解决rpm安装软件包依赖的问题,不过yum是基于rpm来实现的,所以如果rpm使用有异常或者环境有问题,yum可能会使用异常。
    yum - Yellowdog Updater Modified,通常都叫小黄狗。yum是rpm的前端工具实现,可以从指定服务器上自动下载程序包,并自动分析程序包的元数据、自动处理程序包之间的依赖关系,能一次性安装完所有依赖的包,而无须繁琐地一次次安装所有依赖包。yum访问访问文件服务器(俗称yum仓库,yum repository)的模式是基于C/S架构的,而文件服务器(repository)则需要以某种共享服务方式将其提供的程序包及包相关的元数据提供给其他主机使用,通常使用到的协议有http、https、ftp、nfs等。此外,还可以使用光盘作为本地仓库或者自己制作本地仓库,通常使用到的协议是file。

    上面有提到repository,yum的repository俗称yum仓库(yum repo),这个仓库里面存储了很多rpm包以及存放于特定
    repodata目录下的包的相关元数据文件。既然yum访问yum仓库的模式是C/S架构,所以就必然有个yum客户端和
    yum服务端的概念。

    • yum客户端
    配置文件:
        /etc/yum.conf:为所有仓库提供公共配置
        /etc/yum.repos.d/*.repo:为仓库的指向提供配置
    
    yum仓库指向的配置文件:
    [repositoryID]    这个表示仓库的id表示,不同的yum仓库配置不能相同;
    name=Some name for this repository    这个是仓库的名字;
    baseurl=url://path/to/repository/   这个是访问真正的yum服务端的url指向;
    enabled={1|0}   仓库是否启用,1表示启用(默认值),0表示未启用;
    gpgcheck={1|0}   是否要对程序包数据的来源合法性和数据完整性做校验;,1表示检查,0表示不检查;
    gpgkey=URL     指定GPG密钥文件的访问路径,可由仓库提供;;(如果gpgcheck启用,这里就要指向)
    enablegroups={1|0}  是否允许以组的方式管理仓库;
    failovermethod={roundrobin|priority}
        默认为:roundrobin,意为随机挑选;
        当baseurl同时指向多个仓库路径时,可指定以什么方式选择url去访问仓库,以及当某一路径访问
    失败时,可指定如何再选择路径;roundrobin是随机挑选路径访问,priority是自上而下选择路径访
    问;
    cost=
        开销;开销越小,该仓库url更优;默认值为1000.
    
    • yum服务端(yum仓库)
      至于服务端,没什么好说的,我们上面有讲过客户端了,我们来通过几张图来简要说明。
      摘抄:

    linux下包管理器

    linux下包管理器

      用户使用yum去请求安装某一个程序包时,yum工具会先去yum配置文件中查找yum仓库指向的路径,根据该路径去访问远程或本地的文件服务器,这个服务器作为yum仓库并且存储了众多的rpm包以及包相关的元数据文件。当yum根据仓库路径访问到仓库后,会首先尝试请求获取rpm包的元数据文件并缓存至本地(/var/cache/yum目录),而这个元数据文件包括了该仓库所有rpm包的程序包名、版本号、依赖性以及每个程序包所提供的capabilities等。而后,yum根据用户要安装的程序包名去元数据文件里查找,看看仓库里是否有用户请求下载的程序包文件,如果找到了则根据元数据文件分析该程序包的依赖关系并分析本地系统上有哪些包已安装、哪些包还没安装,再将所有用户需要安装且本地尚未安装的程序包名列出来,并以客户端的角色发送至文件服务器(仓库)请求下载之。如果请求成功,则yum将要安装的程序包文件也缓存至本地并执行安装操作。安装完成之后将缓存的程序包文件删除以节约空间,而缓存中只留下元数据文件。

      为什么只缓存元数据而不缓存程序包呢?因为程序包一般只安装一次即可,很少会再安装第二次,而且基于节约空间的考虑,因此yum在安装完程序包后会将缓存中的程序包删除。而缓存元数据好处则是当下一次用户使用yum请求安装程序包时可以节约带宽,无需再次重新请求获取全部的元数据文件,并且可以提高本地分析程序包的速度。

      当用户第二次使用yum请求安装程序包时,基于实时同步更新缓存以及节约带宽的考虑,yum会先请求下载yum仓库下rpm包元数据的校验码文件至本地,将其与本地缓存上的元数据校验码相比较,如果相同,说明无须更新;如果不同,则说明仓库中rpm包已经更新,因此yum会重新请求下载仓库上的元数据文件以更新元数据缓存。接着同样是分析程序包依赖性、请求要安装的全部程序包等。

    3.2、yum常见选项

    语法结构:
    yum [options] [command] [package ...]
    
    options表示选项,command表示使用的命令,package表示软件包的名字;
    
    command is one of:
     * install package1 [package2] [...]
     * update [package1] [package2] [...]
     * update-to [package1] [package2] [...]
     * update-minimal [package1] [package2] [...]
     * check-update
     * upgrade [package1] [package2] [...]
     * upgrade-to [package1] [package2] [...]
     * distribution-synchronization [package1] [package2] [...]
     * remove | erase package1 [package2] [...]
     * autoremove [package1] [...]
     * list [...]
     * info [...]
     * provides | whatprovides feature1 [feature2] [...]
     * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
     * makecache [fast]
     * groups [...]
     * search string1 [string2] [...]
     * shell [filename]
     * resolvedep dep1 [dep2] [...]
        (maintained for legacy reasons only - use repoquery or yum provides)
     * localinstall rpmfile1 [rpmfile2] [...]
        (maintained for legacy reasons only - use install)
     * localupdate rpmfile1 [rpmfile2] [...]
        (maintained for legacy reasons only - use update)
     * reinstall package1 [package2] [...]
     * downgrade package1 [package2] [...]
     * deplist package1 [package2] [...]
     * repolist [all|enabled|disabled]
     * repoinfo [all|enabled|disabled]
     * repository-packages <enabled-repoid> <install|remove|remove-or-reinstall|remove-or-distribution-synchronization>
    [package2] [...]
     * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
     * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
     * load-transaction [txfile]
     * updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all | check-running-kernel]
     * fssnapshot [summary | list | have-space | create | delete]
     * fs [filters | refilter | refilter-cleanup | du]
     * check
     * help [command]
    
    options:
    1、repolist:显示仓库列表;
    repolist [all|enabled|disabled]
    如果指定enabled:表示只显示启用的仓库列表;
    如果指定disabled:表示只显示关闭的仓库列表;
    如果指定all:表示显示启用和关闭的仓库列表;
    默认的repolist的参数是enabled。
    repolist [all|enabled|disabled] 后边还可以通过仓库的id或者名字来查找,并且支持bash通配符机制;
    repolist [all|enabled|disabled] "Repo-id"
    repolist [all|enabled|disabled] "Repo-name"
    
    有时候需要配置-v选项一起,查看详细信息;
    
    2、repoinfo:查看仓库详细信息
    repoinfo [all|enabled|disabled]
    repoinfo命令和repolist [all|enabled|disabled] -v等价;
    
    3、list:显示程序包
    yum list [all | glob_exp1] [glob_exp2] [...]
    列出所有可用和已经安装的软件包;
    yum list available [glob_exp1] [...]
    列出yum仓库所有可用的的安装包;
    yum list updates [glob_exp1] [...]
    列出yum仓库所有可用的更新包;
    yum list installed [glob_exp1] [...]
    列出所有已经安装的软件包;
    yum list extras [glob_exp1] [...]
    列出所有系统已经安装的软件包却不能被yum仓库的配置文件所列出(通过rpm安装的或者之前yum仓库安装
    后来yum仓库被移除了等)软件包列表;
    yum list distro-extras [glob_exp1] [...]
    列出所有已经安装的软件包却不能根据yum配置文件列出的yum仓库的名字所匹配(yum仓库已经被移除了)软件包
    列表;
    yum list obsoletes [glob_exp1] [...]
    列出系统已经安装却被rpm仓库的配置文件列表指向yum仓库人为软件包已经过时了的软件包列表;
    yum list recent
       List  packages recently added into the repositories. This is often not helpful, but what you may really want
       to use is "yum list-updateinfo new" from the security yum plugin.
    列出最近加入yum仓库的软件包列表。
    
    4、install:安装
    install package1 [package2] [...]
    
    5、reinstall:重新安装
    reinstall package1 [package2] [...]
    
    6、update:升级更新
    update [package1] [package2] [...]
    不指定软件包名或者指定参考没有匹配(可以使用bash通配机制)软件包,会更新所有软件包;
    
    7、downgrade:降级
    downgrade package1 [package2] [...]
    
    8、check-update:检查是否有可用的升级
    返回状态值为100表示有可用的软件包升级(正常会返回可用的软件包更新列表);
    返回状态值为0表示无可用的软件包升级;
    返回状态值为1表示运行报错;
    
    9、remove or erase:卸载软件包
    remove | erase package1 [package2] [...]
    yum默认有保护yum自身的机制,不能对yum本身进行卸载;
    
    10、info:查看程序包信息
    列出描述和摘要信息,可选的指定选项和list一样,下面只理出,不再次说明含义。
    yum info [all | glob_exp1] [glob_exp2] [...]
    yum info available [glob_exp1] [...]
    yum info updates [glob_exp1] [...]
    yum info installed [glob_exp1] [...]
    yum info extras [glob_exp1] [...]
    yum info distro-extras [glob_exp1] [...]
    yum info obsoletes [glob_exp1] [...]
    yum info recent
    用的最多的就是:
    yum info package_name类似于rpm -qi package_name或者rpm -qpi package_name.xxx.rpm
    
    11、search:搜索程序包
    search [all] string1 [string2] [...]
    以指定的关键字搜索程序包名及summary信息;
    默认是根据报名和摘要信息进行搜索,如果检索失败,会去详细描述信息和url中去检索;
    可以显式指明all来增大检索的范围,搜索的结果会有一定的排序;
    
    12、provides 或 whatprovides:查看指定的特性是由哪个程序包提供
    provides | whatprovides feature1 [feature2] [...]
    
    13、clean:清理本地缓存
    yum clean expire-cache  清理过期缓存;
    yum clean packages   清理包;
    yum clean headers  清理头文件;
    yum clean metadata 清理元数据;
    yum clean dbcache 清理sqlite数据库缓存;
    yum clean rpmdb 清理本地的rpmdb缓存;
    yum clean plugins 清理插件;
    yum clean all 清理所有的
    
    14、makecache:构建本地缓存
    makecache [fast]
    不加fast,会对所有启用的仓库构建本地缓存数据;
    加fast,速度更快,不过只会对过期的缓存进行重新缓存,已经缓存且没过期的不会;
    
    15、deplist:查看指定的软件包所依赖的能力(capabilities)
    deplist package1 [package2] [...]
    
    16、history:查看yum事务历史
    history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
    不常用,这里不进行讲解每个选项的含义。
    
    17、安装及升级本地程序包:
    * localinstall rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use install)
    * localupdate rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use update)
    这是一个早期的版本的选项,就是如果你本地有一个rpm文件,你可以直接通过yum 指定这个rpm文件(接的全名)
    来安装(会解决依赖管理,去启用的仓库中寻找依赖的软件包)。
    CentOS 6.x和CentOS 7.x直接使用:
    yum install package_name.xxx.rpm
    yum update package_name.xxx.rpm
    
    18、包组管理相关:
    * groupinstall group1 [group2] [...]   #安装开发包组
    * groupupdate group1 [group2] [...]  #更新开发包组
    * grouplist [hidden] [groupwildcard] [...] #列出开发包组的信息
    * groupremove group1 [group2] [...] #卸载开发包组
    * groupinfo group1 [...]  #查看开发包组的摘要信息(包含软件包列表)
    
    yum的命令行选项:
    --nogpgcheck:禁止进行gpg check;
    -y: 自动回答为“yes”;
    -q:静默模式;
    --disablerepo=repoidglob:临时禁用此处指定的repo;
    --enablerepo=repoidglob:临时启用此处指定的repo;
    --noplugins:禁用所有插件;
    

    3.3、自己配置yum仓库

    3.3.1、配置本地yum仓库

    我们本地有个iso的光盘,里面有很多软件包,简单来看看如何配置yum的客户端,然后通过挂载光盘
    到文件系统上,通过本地文件系统安装管理软件包。
    
    (1) 挂载光盘至某目录,例如/media/cdrom
    mkdir -p /media/cdrom  #创建光盘挂载点
    mount -r -t iso9660 /dev/cdrom /media/cdrom #只读挂载光盘文件到/dev/cdrom下(iso9660表示光盘的类型)
    
    (2) 创建配置文件
    最少可选模板,
    [repository-id]
    name=
    baseurl=
    gpgcheck=
    enabled=
    
    [root@node2 ~]# cd /etc/yum.repos.d/
    [root@node2 yum.repos.d]# mkdir -p /media/cdrom
    [root@node2 yum.repos.d]# mount -r -t iso9660 /dev/cdrom /media/cdrom/
    [root@node2 yum.repos.d]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        98G  1.5G   97G   2% /
    devtmpfs        229M     0  229M   0% /dev
    tmpfs           238M     0  238M   0% /dev/shm
    tmpfs           238M  8.8M  230M   4% /run
    tmpfs           238M     0  238M   0% /sys/fs/cgroup
    /dev/sda1       397M   94M  303M  24% /boot
    tmpfs            48M     0   48M   0% /run/user/0
    tmpfs            48M     0   48M   0% /run/user/1000
    tmpfs            48M     0   48M   0% /run/user/1007
    /dev/sr0        4.1G  4.1G     0 100% /mnt
    [root@node2 yum.repos.d]# ls -l /media/cdrom/
    total 614
    -rw-r--r-- 1 root root     16 Apr  1  2015 CentOS_BuildTag
    drwxr-xr-x 3 root root   2048 Mar 28  2015 EFI
    -rw-r--r-- 1 root root    215 Mar 28  2015 EULA
    -rw-r--r-- 1 root root  18009 Mar 28  2015 GPL
    drwxr-xr-x 3 root root   2048 Mar 28  2015 images
    drwxr-xr-x 2 root root   2048 Mar 28  2015 isolinux
    drwxr-xr-x 2 root root   2048 Mar 28  2015 LiveOS
    drwxr-xr-x 2 root root 589824 Apr  1  2015 Packages
    drwxr-xr-x 2 root root   4096 Apr  1  2015 repodata
    -rw-r--r-- 1 root root   1690 Mar 28  2015 RPM-GPG-KEY-CentOS-7
    -rw-r--r-- 1 root root   1690 Mar 28  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r-- 1 root root   2883 Apr  1  2015 TRANS.TBL
    
    这是我配置的yum仓库客户端的配置文件
    [root@node2 yum.repos.d]# cat local-base.repo
    [CentOS7-localbase]
    name=CentOS 7 local iso base
    baseurl=file:///media/cdrom
    gpgcheck=0
    enabled=1
    
    [root@node2 yum.repos.d]# yum repolist
    Loaded plugins: fastestmirror
    CentOS7-localbase                                                                                      | 3.6 kB  00:00:00     
    (1/2): CentOS7-localbase/group_gz                                                                      | 154 kB  00:00:00     
    (2/2): CentOS7-localbase/primary_db                                                                    | 2.7 MB  00:00:00     
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * extras: mirrors.shu.edu.cn
     * updates: mirrors.163.com
    repo id                                                  repo name                                                      status
    CentOS7-localbase                                        CentOS 7 local iso base                                        3,576
    base/7/x86_64                                            CentOS-7 - Base                                                9,911
    extras/7/x86_64                                          CentOS-7 - Extras                                                432
    updates/7/x86_64                                         CentOS-7 - Updates                                             1,602
    repolist: 15,521
    上面可以看出,我们的配置的已经可以被查询出来了。
    
    yum的repo配置文件中可用的变量:
        $releasever: 当前OS的发行版的主版本号;
        $arch: 平台;
        $basearch:基础平台;
        $YUM0-$YUM9
    

    3.3.2、配置网络yum仓库

    自己准备一些软件包,然后构建一个yum的服务端仓库,然后通过http协议给本地机器走http协议访问。
    
    yum server:
    
    1、创建一个文件系统目录,上传一些软件包(模拟测试用的)
    [root@node2 ~]# mkdir -p /data/yum_server
    [root@node2 ~]# cd /data/yum_server
    [root@node2 yum_server]# ls /data/yum_server
    DenyHosts-2.6.tar.gz           nginx-1.10.3.tar.gz   redis-3.2.11.tar.gz  redis-4.0.3.tar.gz  redis-4.0.9.tar.gz
    extundelete-0.2.4.tar.bz2      nginx-1.12.2.tar.gz   redis-3.2.3.tar.gz   redis-4.0.4.tar.gz  ss5-3.8.9-8.tar.gz
    fping-2.4b2-10.el6.x86_64.rpm  nginx-1.14.0.tar.gz   redis-3.2.8.tar.gz   redis-4.0.5.tar.gz  tcl8.6.6-src.tar.gz
    keepalived-1.2.20.tar.gz       nginx-1.6.3.tar.gz    redis-4.0.0.tar.gz   redis-4.0.6.tar.gz
    kubernetes-1.11.2.zip          Python-2.7.13.tar.xz  redis-4.0.1.tar.gz   redis-4.0.7.tar.gz
    lynis-2.5.7.tar.gz             redis-3.2.10.tar.gz   redis-4.0.2.tar.gz   redis-4.0.8.tar.gz
    
    2、安装createrepo
    [root@node2 yum_server]# rpm -q createrepo
    package createrepo is not installed
    [root@node2 yum_server]# yum install createrepo
    ......
    
    3、 初始化repodata索引文件
    -d --database
           Generate sqlite databases for use with yum. This is now the default.
    -p --pretty
           Output xml files in pretty format.
    -o --outputdir <url>
           Optional output directory (useful for read only media).
    
    [root@node2 yum_server]# createrepo -pdo /data/yum_server/ /data/yum_server/
    Spawning worker 0 with 1 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    [root@node2 yum_server]# ls /data/yum_server/
    DenyHosts-2.6.tar.gz           nginx-1.10.3.tar.gz   redis-3.2.11.tar.gz  redis-4.0.3.tar.gz  redis-4.0.9.tar.gz
    extundelete-0.2.4.tar.bz2      nginx-1.12.2.tar.gz   redis-3.2.3.tar.gz   redis-4.0.4.tar.gz  repodata
    fping-2.4b2-10.el6.x86_64.rpm  nginx-1.14.0.tar.gz   redis-3.2.8.tar.gz   redis-4.0.5.tar.gz  ss5-3.8.9-8.tar.gz
    keepalived-1.2.20.tar.gz       nginx-1.6.3.tar.gz    redis-4.0.0.tar.gz   redis-4.0.6.tar.gz  tcl8.6.6-src.tar.gz
    kubernetes-1.11.2.zip          Python-2.7.13.tar.xz  redis-4.0.1.tar.gz   redis-4.0.7.tar.gz
    lynis-2.5.7.tar.gz             redis-3.2.10.tar.gz   redis-4.0.2.tar.gz   redis-4.0.8.tar.gz
    [root@node2 yum_server]# ls /data/yum_server/repodata
    0dd81bd3480e1b700ef4d8501952ada4c17f0f7aa6e33b2ecdc1986327bcef70-primary.sqlite.bz2
    54b9a1903b8bd39bcfd5c1e35840a19891a1187d078a009b4882aedf24e21154-filelists.sqlite.bz2
    59026382882aae681f9af6f060b7d151f36be0e82583dcd07652cc7bb74d9f8c-other.sqlite.bz2
    71b15f14ece520f2722a1648481a433c30e4bff9e407b89ad4d22f0ec40b90bd-other.xml.gz
    cb1c34973cff8ddb6b6f40fc48ddaec468c057f9ff62c20fad26119d278b6c85-primary.xml.gz
    dc8a69e32b8fbfd2a3d54f6f92ed53561754e3bf68b4263be3e74323a1bb2549-filelists.xml.gz
    repomd.xml
    [root@node2 yum_server]# cat /data/yum_server/repodata/repomd.xml |wc -l
    55
    
    4、通过http协议实现yum的文件传输
    (1) 安装nginx
    yum install nginx
    此步骤要包装本地配置的yum客户端配置指向的启用的yum源,要有nginx安装包,常见的EPEL源和nginx官方自己的
    yum仓库就提供nginx的软件包;
    
    (2) 修改nginx主页指向
    
    vim /etc/nginx/conf.d/default.conf
    默认 root   /usr/share/nginx/html
    改为
    root /data/yum_server
    (3) 设置nginx主页权限和防火墙放行http服务(我没有启用Selinux机制)
    [root@node2 ~]# id nginx
    uid=998(nginx) gid=996(nginx) groups=996(nginx)
    [root@node2 ~]# setfacl -R -m u:nginx:r-- /data/yum_server
    [root@node2 ~]# getfacl /data/yum_server
    getfacl: Removing leading '/' from absolute path names
    # file: data/yum_server
    # owner: root
    # group: root
    user::rwx
    user:nginx:r--
    group::r-x
    mask::r-x
    other::r-x
    [root@node2 ~]# getfacl /data/yum_server/redis-4.0.1.tar.gz 
    getfacl: Removing leading '/' from absolute path names
    # file: data/yum_server/redis-4.0.1.tar.gz
    # owner: root
    # group: root
    user::rw-
    user:nginx:r--
    group::r--
    mask::r--
    other::r--
    [root@node2 yum.repos.d]#  getfacl -p /data/yum_server/redis-4.0.1.tar.gz 
    # file: /data/yum_server/redis-4.0.1.tar.gz
    # owner: root
    # group: root
    user::rw-
    user:nginx:r--
    group::r--
    mask::r--
    other::r--
    
    [root@node2 yum.repos.d]#  getfacl -p /data/yum_server/nginx-1.14.0.tar.gz 
    # file: /data/yum_server/nginx-1.14.0.tar.gz
    # owner: root
    # group: root
    user::rw-
    user:nginx:r--
    group::r--
    mask::r--
    other::r--
    
    Firewalld防火墙放行http:
    [root@node2 yum.repos.d]# firewall-cmd --help|grep add-service
      --add-service=<service>
    [root@node2 yum.repos.d]# firewall-cmd --add-service=http --permanent
    success
    [root@node2 yum.repos.d]# firewall-cmd --reload
    success
    [root@node2 yum.repos.d]# firewall-cmd --list-services
    dhcpv6-client http ssh
    
    (5) 启动nginx,尝试机房访问测试
    [root@node2 ~]# nginx -t 
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
    [root@node2 ~]# systemctl enable nginx.service
    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
    [root@node2 ~]# systemctl start nginx.service
    [root@node2 ~]# ss -nlt|grep :80
    LISTEN     0      128                       *:80                       *:* 
    
    如果是单纯的文件访问没问题,不过要想列出nginx的文件列表,首先nginx的工作进程用户要
    对主页的那个目录有执行权限,其次,对应的站点的配置要添加以下内容:
    autoindex on;  # 开启目录文件列表
    autoindex_exact_size on;  # 显示出文件的确切大小,单位是bytes
    autoindex_localtime on;  # 显示的文件时间为文件的服务器时间
    charset utf-8,gbk;  # 避免中文乱码
    
    给执行权限:
    [root@node2 ~]# setfacl -R -m u:nginx:r-x /data/yum_server
    [root@node2 ~]# getfacl -p /data/yum_server
    # file: /data/yum_server
    # owner: root
    # group: root
    user::rwx
    user:nginx:r-x
    group::r-x
    mask::r-x
    other::r-x
    nginx -t检测语法,成功后,
    systemctl reload nginx.service 重新加载
    
    站点浏览器访问测试![](http://i2.51cto.com/images/blog/201810/28/584f59f82b3f4df557b5f0fae32705a0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
    
    (6)、准备另外一台主机,配置客户端yum源的baseurl指向上面配置的http站点
    
    客户端配置:
    [local-http]
    name=centos7 local http
    baseurl=http://172.168.110.21/
    enable=1
    gpgcheck=0
    
    这里有些凌乱了,我把源码包传到我的yum服务器的软件包目录了,我应该准备rpm包。
    拷贝一些光盘的软件包到我的yum服务端的对应目录。
    [root@node2 yum_server]# cp /media/cdrom/Packages/*.rpm .
    [root@node2 yum_server]# du -sh /data/yum_server/
    3.6G    /data/yum_server/
    重新授权:
    [root@node2 yum_server]# setfacl -R -m u:nginx:r-x /data/yum_server
    软件包加入或变更,要手动更新一下:(更新是非常吃cpu资源的,请不要在有业务的生成环境上测试)
    [root@node2 yum_server]# createrepo --update /data/yum_server
    Spawning worker 0 with 3576 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    客户端重启构建一下缓存数据:
    [root@node1 yum.repos.d]# yum makecache
    Loaded plugins: fastestmirror
    local-http                                                                                             | 2.9 kB  00:00:00     
    (1/3): local-http/primary_db                                                                           | 2.7 MB  00:00:00     
    (2/3): local-http/filelists_db                                                                         | 2.7 MB  00:00:00     
    (3/3): local-http/other_db                                                                             | 1.1 MB  00:00:00     
    Loading mirror speeds from cached hostfile
    Metadata Cache Created
    
    我之前把系统默认自带的repo都备份了,现在哪台客户端主机只剩下这个配置的http的yum仓库。
    [root@node1 yum.repos.d]# yum repolist
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    repo id                                                 repo name                                                       status
    local-http                                              centos7 local http                                              3,577
    repolist: 3,577
    [root@node1 yum.repos.d]# yum info zsh
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Available Packages
    Name        : zsh
    Arch        : x86_64
    Version     : 5.0.2
    Release     : 7.el7
    Size        : 2.4 M
    Repo        : local-http
    Summary     : Powerful interactive shell
    URL         : http://zsh.sourceforge.net/
    License     : MIT
    Description : The zsh shell is a command interpreter usable as an interactive login
                : shell and as a shell script command processor.  Zsh resembles the ksh
                : shell (the Korn shell), but includes many enhancements.  Zsh supports
                : command line editing, built-in spelling correction, programmable
                : command completion, shell functions (with autoloading), a history
                : mechanism, and more.
    [root@node1 yum.repos.d]# yum install zsh
    ......
    [root@node1 yum.repos.d]# rpm -q zsh
    zsh-5.0.2-7.el7.x86_64
    经过简单测试后,发现没有问题。
    
    PS:一般构建自己的yum服务器,会去外网同步更新yum仓库的软件包(这台服务器必须要保证出口带宽)。如果
    走外网提供yum文件传输的话,可以这样做,同步外网的软件包,然后对内走内网使用yum仓库。
    比较有名的,CentOS的自己的源,163的源,EPEL的源,阿里云的源等等。

    四、rpm包管理器的前端工具dnf(精简说明)

    默认base仓库没有dnf软件包,需要特殊配置,就连EPEL源也没有,所以我这里只是简单的介绍一下。

    网上google的做法:

    yum -y install wget
    wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm
    wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//dnf-0.6.4-2.sdl7.noarch.rpm
    wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm  
    yum -y install python-dnf-0.6.4-2.sdl7.noarch.rpm  dnf-0.6.4-2.sdl7.noarch.rpm dnf-conf-0.6.4-2.sdl7.noarch.rpm 
    
    [root@node2 ~]# yum info dnf
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * epel: mirrors.yun-idc.com
     * extras: mirrors.shu.edu.cn
     * updates: mirrors.163.com
    Installed Packages
    Name        : dnf
    Arch        : noarch
    Version     : 0.6.4
    Release     : 2.sdl7
    Size        : 652 k
    Repo        : installed
    From repo   : /dnf-0.6.4-2.sdl7.noarch
    Summary     : Package manager forked from Yum, using libsolv as a dependency resolver
    URL         : https://github.com/rpm-software-management/dnf
    License     : GPLv2+ and GPLv2 and GPL
    Description : Package manager forked from Yum, using libsolv as a dependency resolver.
    
    dnf是是下一个即将到来的主要版本的yum,它是基于rpm包管理器的linux发型版本的包管理器。(很谦虚)
    它大体上维护了与YUM兼容的CLI,并定义了扩展和插件的严格API。yum相较yum是有有点的,不过目前
    的CentOS 7.x没有采纳进来, Fedora 22 已经默认使用 DNF作为包前端管理器。
    
    dnf语法结构:
    dnf [options] <command> [<args>...]
    Available commands are:
    
    · autoremove
    · check-update
    · clean
    · distro-sync
    · downgrade
    · group
    · help
    · history
    · info
    · install
    · list
    · makecache
    · provides
    · reinstall
    · remove
    · repolist
    · repository-packages
    · search
    · updateinfo
    · upgrade
    · upgrade-to
    
    1、安装和重新安装
    dnf [options] install <spec>...
    dnf [options] reinstall <package-specs>...
    
    2、检测更新和更新
    dnf [options] check-update [<package-specs>...]
    dnf [options] upgrade
    
    3、卸载
    dnf [options] erase <spec>...
    dnf [options] remove <package-specs>...
    
    4、查看repo和软件包以及列表
    dnf [options] repolist [enabled|disabled|all]
    dnf [options] info [<package-spec>...]
    dnf [options] list [all] [<package-name-specs>...]
    dnf [options] list installed [<package-name-specs>...]
    dnf [options] list available [<package-name-specs>...]
    dnf [options] list extras [<package-name-specs>...]
    dnf [options] list obsoletes [<package-name-specs>...]
    dnf [options] list recent [<package-name-specs>...]
    dnf [options] list upgrades [<package-name-specs>...]
    
    5、检索软件包
    dnf [options] search [all] <keywords>...
    
    6、清理缓存和构建缓存
    dnf clean dbcache
    dnf clean expire-cache
    dnf clean metadata
    dnf clean packages
    dnf clean plugins
    dnf clean all
    dnf [options] makecache
    
    等(其他查看软件包的能力,以及包组管理相关,我就不列出来了,也是支持的,和yum几乎差别不大)
    
    展开全文
  • Decentraland资源管理器 贡献 请阅读 在你开始之前 此仓库需要git lfs来跟踪图像和其他二进制文件。 以及最新版本的GNU make,请使用brew install make如果您使用的是Windows 10,建议您启用Linux子系统并从Windows ...
  • 大概情况就是在我好不容易解决了【Windows 右键 图标-菜单无法打开-资源管理器重启-explorer.exe停止与 Windows 交互并关闭【已解决】】这个问题后,发现我的移动硬盘竟然无法识别,经过测试硬盘是好的,电脑可以...

    硬件的问题说多了都是泪TT!!!大概情况就是在我好不容易解决了【Windows 右键 图标-菜单无法打开-资源管理器重启-explorer.exe停止与 Windows 交互并关闭【已解决】】这个问题后,发现我的移动硬盘竟然无法识别,经过测试硬盘是好的,电脑可以识别U盘,试了我能找到的所有的中文方法,基本上没卵用!!!无奈求助英文版的,果然外国的很多东西不得不说还是比国内的好很多啊【不要说俺崇洋媚外啊-_-...】

    解决方法如下:一共七种方法,俺一直试到第6种才成功!!!虽然现在也不知道是个什么原因,不过问题已经解决啦,用的竟然还是windows自带的修复功能!:

    Full Fix: Windows 10 Does Not Recognize Portable Hard Drive

    For various PC problems, we recommend this tool.

    This software will repair common computer errors, protect you from file loss, malware, hardware failure and optimize your PC for maximum performance. Fix PC issues now in 3 easy steps:

     

    1. Download this PC Repair Tool rated "Excellent" on TrustPilot.com.
    2. Click “Start Scan” to find Windows issues that could be causing PC problems.
    3. Click “Repair All” to fix issues with Patented Technologies (Exclusive Discount for our readers).

     

    Portable hard drives are always useful if you’re moving big files, or if you simply need to backup your files. However, it seems that some users are complaining that Windows 10 does not recognize the portable hard drive, so let’s see if there’s a way to fix that.

    What to do if Windows 10 Does Not Recognize Portable Hard Drive

    Portable hard drives are great for file backup, but sometimes your portable hard drive might not be recognized. Speaking of issues, here are some common hard drive problems reported by users:

    • External hard drive not showing up in Disk Management – This can be a big problem, and if you encounter it, be sure that your hard drive is properly connected to your PC.
    • Can’t access external hard drive Windows 10 – Many users reported that they can’t access their hard drive on Windows 10. If that’s the case, make sure that you assign a different letter to your hard drive. Also, be sure to check if your hard drive is formatted.
    • External hard disk not detected in Disk Management – Sometimes your hard disk might not show up in Disk Management at all. That can be due to your drivers, so be sure to keep them up to date.
    • Windows doesn’t recognize USB device, drive, stick – This problem can occur with almost any USB storage device, and even if you don’t use an external hard drive, you should be able to use most of our solutions with other devices.

    Solution 1 – Update your drivers

    In most cases Windows 10 should automatically recognize your portable hard drive, but sometimes it can happen that Windows 10 doesn’t have drivers for your portable hard drive, but you can fix that by following these steps:

    1. Press Windows Key + X to open Win + X menu and choose Device Manager from the list.

      External hard disk not detected in Disk Management

    2. Locate Disk drives section and expand it.
    3. Check if any of the listed devices have a yellow exclamation mark next to it. If there is an exclamation mark next to your device this means that there might be a driver issue. Right-click the device and choose Update Driver.

      External hard disk not detected in Disk Management

    4. Select Search automatically for driver software.

      Windows doesn't recognize USB device, drive, stick

    Windows will now search for a suitable driver online and install it automatically. After the driver is installed, check if the problem is still there. In addition, users are recommending to update Universal Serial Bus Controller driver, so be sure to try that as well.

    We also recommend this third-party tool (100% safe and tested by us) to automatically download all the outdated drivers on your PC.

    In addition, you might want to check manufacturer’s website for latest drivers.


    Solution 2 – Change portable hard drive letter / Format your portable hard drive

    If you already have the latest drivers, and your computer still isn’t able to recognize the portable hard drive, you can try and change the drive letter of the portable hard drive. Here’s exactly what you need to do:

    1. Press Windows Key + X and choose Disk Managementfrom the menu.

      External hard disk not detected in Disk Management

    2. Locate your portable hard drive in Disk Management and right click it. Choose Change Drive Letter and Paths.

      External hard drive not showing up in Disk Management

    3. A new window will appear showing you the current letter of your portable hard drive.
    4. Click Change and choose a new letter for it. Make sure that you choose the letter that you won’t assign to another drive.

      Windows doesn't recognize USB device

    5. You’ll be presented with a dialog confirming that you wish to change the letter of the drive. Select Yes to change the drive letter.

    If Disk Management shows your portable hard drive filled with unallocated space you might want to format your portable hard drive. Formatting a drive will delete all files from it, so make sure that you backup important files first.

    To format the portable hard drive do the following:

    1. Open Disk Management.
    2. Right-click your portable hard drive and choose Formatfrom the menu.

      External hard drive not showing up in Disk Management

    3. Enter the label for your hard drive, choose File system type.

      Can't access external hard drive Windows 10

    4. Press OK and wait until your portable hard drive is formatted.

    If you can’t do this in Disk Management, or you would prefer to use a different tool, we already covered some great disk management tools, so you might want to try one of those. If you’re looking for a simple but powerful disk Management tool, our recommendation would be Mini Tool Partition Wizard.


    Solution 3 – Run the Hardware troubleshooter

    If Windows 10 doesn’t recognize your portable hard drive, you might be able to solve the problem by using the Hardware troubleshooter. As you know, Windows comes with all sorts of troubleshooters, and you can use them to fix some common problems.

    Some users claim that you can fix this problem by using the Hardware troubleshooter, and you can do that by following these steps:

    1. Press Windows Key + I to open the Settings app.
    2. Go to the Update & Security section.

      External hard drive not showing up in Disk Management

    3. Select Troubleshoot from the menu on the left and in the right pane choose Hardware and Devices. Now click Run the troubleshooter button.

      Can't access external hard drive Windows 10

    4. Follow the instructions on the screen to complete the troubleshooter.

    We recommend Reimage for various PC problems

    • repair common errors
    • protection against file loss
    • malware aftermath
    • fix corrupted files
    • replace missing files
    • hardware failures
    • performance optimization

    Find and fix Windows errors automatically

    ▼ FIX IT NOW

    Rated Excellent

    stars

    Once the troubleshooting process is finished, check if the problem is still there.

    If you’re still having issues with your hardware or you simply want to avoid them for the future, we recommend you to download this tool (100% safe and tested by us) to fix various PC problems, such as hardware failure, but also file loss and malware.


    Solution 4 – Uninstall problematic drivers

    According to users, if your portable hard drive isn’t recognized, the issue might be your current drivers. However, many users are suggesting to install the default drivers in order to fix the problem. This is relatively simple, and you can do it by following these steps:

    1. Open Device Manager.
    2. Locate your portable hard drive, right-click it and choose Uninstall device from the menu.

      Can't access external hard drive Windows 10

    3. Click Uninstall to remove the driver.
    4. Now click Scan for hardware changes icon. Windows will install the default drivers for your portable hard drive.

      Windows doesn't recognize USB drive

    Some users are recommending to uninstall all devices under Universal Serial Bus Controllers section, so be sure to try that as well.


    Solution 5 – Check the cable and try the hard drive on a different PC

    If your Windows doesn’t recognize the portable hard drive, it’s possible that there’s an issue with its cable. Be sure to inspect your cable, and if your cable is broken, you’ll need to replace it. In addition, you can try the portable hard drive on a different PC.

    If the same problem appears on another PC, the problem is most likely related to your portable hard drive. Most likely the hard drive isn’t properly configured or formatted, so you’ll need to configure it properly before you can use it.


    Solution 6 – Install Mass Store Device driver

    According to users, sometimes your drivers can cause the problem with the portable hard drive. To fix the issue, it’s advised to use Mass Store Device driver. This is quite simple to do, and you can do it by following these steps:

    1. Open Device Manager.
    2. Locate your portable hard drive, right-click it and choose Update driver.
    3. Select Browse my computer for driver software.

      Can't access external hard drive Windows 10

    4. Select Let me pick from a list of available drivers on my computer.

      External hard drive not showing up in Disk Management

    5. Now select the Mass Storage Device driver and install it.

    After this driver is installed, check and see if the problem is resolved.


    Solution 7 – Inspect your portable hard drive

    If Windows 10 can’t recognize your hard drive, you might have to check few things before using it. You need to check the following:

    • Make sure that your hard drive is turned on. Sometimes you might have issues with your hard drive simply because it’s not turned on. To fix the problem, check your drive for the power switch and press it. If your hard drive has a power cable, be sure that you connect it.
    • Connect the drive to a different port. In some rare cases, it might happen that your USB port isn’t working properly. Your USB port might be damaged, or it might not be fully compatible with your hard drive.
    • Connect the hard drive directly to your PC. Many users tend to use USB hubs in order to connect multiple USB devices to a single port. Even though USB hubs are quite useful, your hard drive might not work if you connect it to the USB hub. To fix the problem, connect the hard drive directly to your PC and check if that helps.

    We also have to mention that if your hard drive is formatted using Linux or Mac with ext4 or HFS Plus File system type you won’t be able to access it on Windows 10 until you format it on Windows. If you have any comments, or questions, just reach for the comments section below.


    Editor’s Note: This post was originally published in October 2015 and has been since completely revamped and updated for freshness, accuracy, and comprehensiveness.

    展开全文
  • linux内核make menuconfig配置

    千次阅读 2018-04-08 12:37:22
    这个选项可以让你建立和管理CPU集群,它可以动态地将系统分割在各个CPU和内存节点中,在各个节点是独立运行的。这对大型的系统尤其有效。 如果不清楚,选N。  2.12. Kernel->user space relay support (formerly ...
  • CentOS7搭建Kodexplorer文件资源管理器

    千次阅读 2017-11-23 11:24:34
    web文件资源管理器,使用体验类似 云盘。服务部署,需要自己搭建web服务器。 然后配置web服务,最后部署kodexplorer代码即可。 2. 部署 2.1 部署nginx 在附录部分有说明 2.2 部署php 在附录部分有说明 2.3 ...
  • Linux网络操作系统及应用教程项目式 Linux网络操作系统及应用教程项目式 Linux网络操作系统项目教程第2版 * * * 项目九 使用gcc和make调试程序 项目导入程序写好了接下来做什么呢调试程序调试对于程序员或管理员来说...
  • python安装 pip安装 easy_install安装 setuptools安装 virtualenv安装,linux 下python安装 pip安装 easy_install安装 setuptools安装 virtualenv安装。python安装 pip安装 easy_install安装 setuptools安装 ...
  • linux进程管理

    万次阅读 2016-01-14 11:47:07
    因此,对进程及其调度进行一般管理就显得极为重要。  在用户空间,进程是由进程标识符(PID)表示的。从用户的角度来看,一个 PID 是一个数字值,可惟一标识一个进程。一个 PID 在进程的整个生命期间不会
  • linux进程管理原理

    万次阅读 2017-08-16 05:09:57
    因此,对进程及其调度进行一般管理就显得极为重要。  在用户空间,进程是由进程标识符(PID)表示的。从用户的角度来看,一个 PID 是一个数字值,可惟一标识一个进程。一个 PID 在进程的整个生命期间不会更
  • linux 文本编辑Text editors play a major role for Linux users. Whether it is setting up user instructions, editing configuration files or writing code scripts to run on your system, everyone has a ...
  • 日期 内核版本 架构 作者 GitHub CSDN 2016-08-31 ... Linux内存管理 1 前景回顾前面我们讲到服务器体系(SMP, NUMA, MPP)与共享存储器架构(UMA和NUMA)1.1 UMA和NUMA两种模型共享存储型多处理机有两种模型
  • Linux操作系统基础

    万次阅读 多人点赞 2018-05-27 12:16:53
    Linux简介 Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机 Linux介绍 Linux出现...
  • Linux 优秀软件资源大全中文版

    千次阅读 2016-08-21 10:38:57
    Awesome-Linux-Software 是由 VoLuong 发起并维护的 Linux 软件资源列表。该列表收集了许多在 Linux 平台下非常棒的软件、实用工具以及其它相关资料,方便用户或开发者查阅。Linux 软件资源大全中文版 则是依据 ...
  • 日期 内核版本 架构 作者 GitHub ... Linux进程管理与调度-之-进程的描述 对象文件格式对象文件首先,你需要知道的是所谓对象文件(Object files)有三个种类: 可重定位的对象文件(Relocatable file)
  • linux下包管理工具

    千次阅读 2018-07-26 21:46:21
    管理介绍 大多数现代的类 Unix 操作系统都提供了一种中心化的机制用来搜索和安装软件。软件通常都是存放在存储库中,并通过包的形式进行分发。处理包的工作被称为包管理。包提供了操作系统的基本组件,以及共享的...
  • 各种LINUX资源链接

    千次阅读 2017-12-02 21:32:21
    FROM:http://www.cppblog.com/tqsheng/archive/2012/02/21/166181.html http://www.embedworld.com/  ... ...Cross-Referencing Linux(基于lxr的linux源码阅读,emacs的etags不好使的时候用它) http://lxr.linu
  • 前言:python在linux环境下面没有安装包,只支持从源码安装,本文不仅仅会完整的演示安装步骤,还会解释每一步这么做的原因以及一些关键概念的理解,包括什么是make等。本文基于centos7的KDE桌面版,安装python3.6.9...
  • 日期 内核版本 架构 作者 GitHub CSDN 2016-09-29 Linux-4.7 X86 & arm gatieme ... 伙伴系统基于一种相对简单然而令人吃惊的强大算法.Linux内核使用二进制伙伴算法来管理和分配物理内存页面, 该算
  • Linux进程优先级的处理 日期 内核版本 架构 ... Linux进程管理与调度 1 前景回顾1.1 进程调度内存中保存了对每个进程的唯一描述, 并通过若干结构与其他进程连接起来.调度面对的情形就是这样, 其
  • loadrunner中添加windows和linux资源监控的方法 标签: 解决方法 主机 系统资源 规格 对话框   对如何在LoadRunner的测试场景中添加资源监控,如何使用资源监控的方法,总结形成...
  • Web基础(三)Python Web

    千次阅读 多人点赞 2018-11-14 19:11:49
    make_server # 导入编写的application函数 from hello import application # 创建一个服务器,IP地址为空,端口是8000,传入函数application httpd = make_server ( '' , 8000 , application ) ...
  • Linux磁盘管理和文件系统

    万次阅读 2021-08-08 15:24:23
    linux系统中,一切皆文件,磁盘设备也是文件的一种。 设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信 设备号码: 主设备号:major number, 标识设备类型 次设备号:minor number, 标识...
  • 日期 内核版本 架构 ... Linux内存管理 1 前景回顾1.1 内核映射区尽管vmalloc函数族可用于从高端内存域向内核映射页帧(这些在内核空间中通常是无法直接看到的), 但这并不是这些函数的实际用途.重要
  • Linux内存管理基础

    千次阅读 2016-07-15 14:38:33
    系统启动之Linux内存管理基础系统启动之Linux内存管理基础 Keywords 闲言碎语 操作系统启动过程 1 bootloader的主要任务是 2 为启用分页机制做准备并使能分页机制 21 建立临时页表 3 initmaincstart_kernerl 4 PKmap...
  • 日期 内核版本 架构 作者 GitHub CSDN 2016-09-29 Linux-4.7 X86 & arm gatieme ... 伙伴系统基于一种相对简单然而令人吃惊的强大算法.Linux内核使用二进制伙伴算法来管理和分配物理内存页面, 该算
  • 日期 内核版本 架构 作者 ... Linux进程管理与调度-之-进程的创建 参照 分析Linux内核创建一个新进程的过程 前言Unix标准的复制进程的系统调用时fork(即分叉),但是Linux,BSD等操作系统并
  • 日期 内核版本 架构 ...进程是处于执行期的程序以及它所管理资源(如打开的文件、挂起的信号、进程状态、地址空间等等)的总称。注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,666
精华内容 21,866
关键字:

linuxmake资源管理器

linux 订阅