首页 文章 精选 留言 我的

精选列表

搜索[linux],共10000篇文章
优秀的个人博客,低调大师

linux下使用quagga配置ospf协议

环境:三台redhat6.5(VM虚拟机) 一、ospf协议 OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。 PS:这里不过多讲解ospf协议,可在网上自行查找学习 二、配置 首先下载安装软件包,其他yum源以及网络配置就不再介绍了,三台配置也是一样的 下载地址:http://download.openpkg.org/components/cache/quagga/ 本人这里使用的版本是quagga-0.99.17.tar.gz 相关依赖包:gcc readline readline-devel #tarzxfquagga-0.99.17.tar.gz #yuminstall-ygccreadlinereadline-devel #cdquagga-0.99.17#进入目录进行源码编译安装 #./configure--enable-vtysh--enable-user=root--enable-group=root--enable-vty-group=root #make&&makeinstall 修改配置文件: 在/etc/services文件里面添加以下内容: #vim/etc/services zebrasrv2600/tcp#zebraservice zebra2601/tcp#zebravty ripd2602/tcp#RIPdvty ripngd2603/tcp#RIPngdvty ospfd2604/tcp#OSPFdvty bgpd2605/tcp#BGPdvty ospf6d2606/tcp#OSPF6dvty ospfapi2607/tcp#ospfapi isid2608/tcp#ISISdvty 修改quagga的配置文件: #mkdir/usr/local/etc/sample #mv/usr/local/etc/*.sample/usr/local/etc/sample/ #mv/usr/local/etc/bgpd.conf.sample2/usr/local/etc/sample/ #cp/usr/local/etc/sample/bgpd.conf.sample/usr/local/etc/bgpd.conf #cp/usr/local/etc/sample/ospfd.conf.sample/usr/local/etc/ospfd.conf #cp/usr/local/etc/sample/ospf6d.conf.sample/usr/local/etc/ospf6d.conf #cp/usr/local/etc/sample/ripd.conf.sample/usr/local/etc/ripd.conf #cp/usr/local/etc/sample/vtysh.conf.sample/usr/local/etc/vtysh.conf #cp/usr/local/etc/sample/ripngd.conf.sample/usr/local/etc/ripngd.conf #cp/usr/local/etc/sample/zebra.conf.sample/usr/local/etc/zebra.conf 修改ospfd的配置文件: #vim/usr/local/etc/ospfd.conf !-*-ospf-*- ! !OSPFdsampleconfigurationfile ! ! hostnameospfd passwordzebra enablepasswordplease-set-at-here routerospf network10.235.117.0/24area0#将网段宣告进ospf中 logstdout 三、启动验证 接下来启动即可: #/usr/local/sbin/ospfd-d #/usr/local/sbin/zebra-d #vtysh Hello,thisisQuagga(version0.99.17). Copyright1996-2005KunihiroIshiguro,etal. test.xiaomi.com#showrunning-config Buildingconfiguration... Currentconfiguration: hostnameRouter hostnameospfd logstdout passwordzebra enablepasswordzebra enablepasswordplease-set-at-here interfaceeth0 ipv6ndsuppress-ra interfacelo routerospf network10.235.117.0/24area0.0.0.0 linevty end test.xiaomi.com#showipospfdatabase OSPFRouterwithID(10.235.117.22) RouterLinkStates(Area0.0.0.0) LinkIDADVRouterAgeSeq#CkSumLinkcount 10.235.117.2210.235.117.2230x800000030x07351 10.235.117.2710.235.117.2790x800000050xf8321 10.235.117.2810.235.117.28100x800000050xf6311 NetLinkStates(Area0.0.0.0) LinkIDADVRouterAgeSeq#CkSum 10.235.117.2810.235.117.28100x800000030xe5cf vtysh是quagga进入模拟路由的,进去可以像正常路由器上面命令一样去查看信息。 我这里是启动了三台ospfd进程,配置都是一样的,重复上面步骤即可,赶紧get起来吧!!!

优秀的个人博客,低调大师

SuSE Linux上修改主机名

1)临时修改主机名 临时修改使用hostname即可,格式为:hostname新主机名。Hostname命令除可以临时修改主机名外,还可以用它来查看主机名,不带参数执行它,即为查看主机名。 2)永久修改主机名 修改文件/etc/HOSTNAME即可: cat/etc/HOSTNAME VM-40-171-sles10-64 但修改后,如果不重启系统,则不会立即生效。如果希望立即生效,但不愿意重启,则可以通过执行命令“/etc/rc.d/boot.localnetstart”来实现。 注意Hadoop要求主机名中不能包含下划线。

优秀的个人博客,低调大师

全新Linux+Python高端运维班-Linux grep正则表达式练习,及find命令

本周作业内容: 1、显示当前系统上root、fedora或user1用户的默认shell; 1 2 3 4 5 6 7 [root@liuhome] #grep-E"^(root|fedora|user1)\>"/etc/passwd|cut-d:-f1,7 root: /bin/bash user1: /bin/bash fedora: /bin/bash #本题使用扩展的正则表达式 #^:首行|:或者():将一个或者多个字符捆绑在一起当作一个整体来处理\>:表示词尾定锚定 #cut-d:f1,7表示用:号作为分隔符,截取第1字段和第7个字段.分别代表用户名和默认的登陆shell 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [root@liu/] #grep-E-o"[_[:alpha:]]+\(\)"/etc/rc.d/init.d/functions fstab_decode_str() checkpid() __readlink() __fgrep() __umount_loop() __umount_loopback_loop() __pids_var_run() __pids_pidof() daemon() killproc() pidfileofproc() pidofproc() status() echo_success() echo_failure() echo_passed() echo_warning() update_boot_stage() success() failure() passed() warning() action() strstr() confirm() get_numeric_dev() is_ignored_file() is_true() is_false() apply_sysctl() key_is_random() find_crypto_mount_point() init_crypto() #使用grep-E或者egrep扩展正则表达式,-o表示只匹配到符合的字符 #[_[:alpha:]]表示以_或者大小写字母开头的字符;+表示前面的字符出现一次或多次; #要匹配包含()的行,在过滤时需要对小括号进行转义:\(\) 3、使用echo命令输出一个绝对路径,使用grep取出其基名; 1 2 3 4 [root@liu/] #echo"/tmp/ljohn/useradd.sh"|grep-E-o"[^/]+$" useradd .sh [root@liu~] #echo"/tmp/ljohn/useradd.sh/"|grep-Eo"[^/]+/?$"|cut-d'/'-f1 useradd .sh #基名basename /tmp/ljohn/useradd.sh 1 2 3 4 [root@liu~] #basename/tmp/ljohn/useradd.sh useradd .sh [root@liu~] #basename/tmp/ljohn/useradd.sh/ useradd .sh 1 2 3 #这样可以看出第二种同basename命令。 #行尾的字符串[^/]除了/斜线的任意内容,+代表这个/至少出现1次 #$:表示行尾锚定 扩展:取出其路径名 1 2 3 4 5 6 7 8 9 [root@liu/] #echo"/tmp/ljohn/useradd.sh"|grep-E-o"^/.*/" /tmp/ljohn/ [root@liu~] #echo"/tmp/ljohn/useradd.sh"|grep-Eo"^/.*/"|grep-Eo"^/.*[^/]" /tmp/ljohn #目录名dirname/tmp/ljohn/useradd.sh [root@liu~] #dirname/tmp/ljohn/useradd.sh /tmp/ljohn [root@liu~] #dirname/tmp/ljohn/useradd.sh/ /tmp/ljohn 1 2 3 4 #这样可以看出第二种同dirname命令 #^/.*/表示以/开头,中间任意长度字符,以/结尾。 #.*:任意长度的任意字符 #[^/]:除了斜线的任意内容 4、找出ifconfig命令结果中的1-255之间数字; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [root@liu/] #ifconfig|grep-E-o"\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9])\>"|sort -n-u 5 8 19 20 29 30 31 38 39 41 42 45 64 100 127 128 137 150 164 168 192 255 #[1-9]表示1-9;[1-9][0-9]表示10-99;1[0-9][0-9]表示100-199;2[0-9][0-9])表示200-299 #使用-o参数表示只显示匹配到的字符; #sort-n-u按数字大小排序并去重; 5、挑战题:写一个模式,能匹配合理的IP地址; # A类地址范围:1.0.0.1—126.255.255.254 B类地址范围:128.0.0.1—191.255.255.254 # C类地址范围:192.0.0.1—223.255.255.254 D类地址范围:224.0.0.1—239.255.255.254 # E类地址范围:240.0.0.1—255.255.255.254 127.X.X.X是保留地址,用做循环测试用的 # 匹配范围为 1-255.0-255.0-255.1-254 1 2 3 [root@liu/] #ifconfig|grep-E-o"(2[0-5]{2}|1[0-9]{2}|[1-9][0-9]|[1-9])\.((2[0-5]{2}|1[0-9]{2}|[1-9][0-9]|[0-9])\.){2}\<(2[0-5][0-4]|1[0-9]{2}|[1-9][0-9]|[1-9])\>" 192.168.137.30 127.0.0.1 #此题参考http://ld0381.blog.51cto.com/3318114/1845601; http://2368360.blog.51cto.com/2358360/1846091 #详细解析: ^PATTERN$ 用于模式匹配整行 {2}表示前面字符正好出现两次 | 的意思是或者 ( )上面的括号不能少,是为了匹配括号中整体字符串,表达式中有几个()就表示有几个相应的匹配字符串 [0-4]表示0~4的任何一个数字 [0-9]表示0~9的任何一个数字 [1-9]的意思是1~9之间的任意一个数字 [1-9][0-9]的意思是10~99之间的任意一个数字 1[0-9]{2}的意思就是100~199之间的任意一个数字 2[0-4][0-9]的意思是200~249之间的任意一个数字 25[0-5]的意思是250~255之间的任意一个数字 \.的意思是.点要转义为普通字符 6、挑战题:写一个模式,能匹配出所有的邮件地址; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@liu/] #cat/tmp/mail.txt 184694637@qq.com lshailkj@qq.com ljohnmail@foxmail.com foxmail@_cmd.cn ljohn@163.com lkjdas_ #@123_.com [root@liu/] #grep-E"^[[:alnum:]]+@[[:alnum:]]+\.[[:alnum:]]+$"/tmp/mail.txt 184694637@qq.com lshailkj@qq.com ljohnmail@foxmail.com ljohn@163.com #先创建了一个mail.txt的文件事先编辑了几个邮箱 #首先要了解邮箱的格式:数字字母@数字字母.数字字母 #[[:alnum:]]+表示任意数字或字母 7、查找/var目录下属主为root,且属组为mail的所有文件或目录; 1 2 3 4 5 [root@liu~] #find/var-userroot-groupmail-ls 2622964drwxrwxr-x2rootmail40969月415:35 /var/spool/mail 2620484-rw-------1rootmail23539月317:33 /var/spool/mail/root #find命令格式:find[OPTION]...[查找路径][查找条件][处理动作] #find命令实现对属主,数组的匹配,使用-user和-group来实现。 8、查找当前系统上没有属主或属组的文件; 1 2 3 4 5 6 7 8 9 10 11 [root@liu~] #find/-nouser-o-nogroup /home/mandirva /home/mandirva/ .gnome2 /home/mandirva/ .bashrc /home/mandirva/ .mozilla /home/mandirva/ .mozilla /plugins /home/mandirva/ .mozilla /extensions /home/mandirva/ .bash_logout /home/mandirva/ .bash_profile /var/spool/mail/mandirva #-nouser没有属主;-nogroup没有数组 进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录; 1 2 3 4 5 6 7 8 9 10 [root@liu~] #find/\(-nouser-o-nogroup\)-atime-3 find :“ /proc/3759/task/3759/fd/5 ”:没有那个文件或目录 find :“ /proc/3759/task/3759/fdinfo/5 ”:没有那个文件或目录 find :“ /proc/3759/fd/5 ”:没有那个文件或目录 find :“ /proc/3759/fdinfo/5 ”:没有那个文件或目录 /home/mandirva /home/mandirva/ .gnome2 /home/mandirva/ .mozilla /home/mandirva/ .mozilla /plugins /home/mandirva/ .mozilla /extensions 9、查找/etc目录下所有用户都有写权限的文件; 1 2 3 4 5 6 7 [root@liu~] #find/etc-perm-222 /etc/rc .d /rc1 .d /K73winbind /etc/rc .d /rc1 .d /K92iptables /etc/rc .d /rc1 .d /K99rngd /etc/rc .d /rc1 .d /K84wpa_supplicant /etc/rc .d /rc1 .d /K89portreserve ... #根据权限查找: -perm [+|-]MODE MODE: 精确权限匹配 +MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可; -MODE:每一类对象都必须同时拥有为其指定的权限标准; -222:表示每一个用户都有写权限。 10、查找/etc目录下大于1M,且类型为普通文件的所有文件; 1 2 3 4 [root@liu~] #find/etc/-typef-size+1M /etc/selinux/targeted/modules/active/policy .kern /etc/selinux/targeted/policy/policy .24 /etc/gconf/gconf .xml.defaults/%gconf-tree.xml #根据类型查找: -type TYPE: f: 普通文件 d: 目录文件 l: 符号链接文件 s:套接字文件 b: 块设备文件 c: 字符设备文件 p: 管道文件 #根据文件大小查找: -size [+|-]#UNIT 常用单位:k, M, G #UNIT: (#-1, #] -#UNIT:[0,#-1] +#UNIT:(#,oo) 11、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件; 1 2 [root@liu~] #find/etc/init.d-perm-113-ls 6529140lrwxrwxrwx1rootroot112月122015 /etc/init .d->rc.d /init .d 12、查找/usr目录下不属于root、bin或hadoop的文件; 1 2 3 4 5 [root@liu~] #find/usr-not\(-userroot-o-userbin-o-userhadoop\)-ls 209568-rwsr-xr-x1abrtabrt670011月232013 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache 或者: [root@liu~] #find/usr-not-userroot-a-not-userbin-a-not-userhadoop-ls 209568-rwsr-xr-x1abrtabrt670011月232013 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache 13、查找/etc/目录下至少有一类用户没有写权限的文件; 1 2 3 4 5 [root@liu~] #find/etc-not-perm-222-ls 65280212drwxr-xr-x118rootroot122889月415:35 /etc 6528260-rw-r--r--1rootroot01月122010 /etc/exports 6619614drwxr-xr-x2rootroot40968月3023:52 /etc/glances 6620334-rw-r--r--1rootroot32881月182014 /etc/glances/glances .conf ... 14、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件; 创建一个文件并修改权限: 1 2 3 4 5 6 7 8 9 10 [root@liuetc] #cat>findtest.txt<<EOF >123123 >Hello!! >Howareyou! >EOF [root@liuetc] #chownliu.liufindtest.txt [root@liuetc] #ls-lfindtest.txt -rw-r--r--.1liuliu299月505:07findtest.txt [root@liuetc] #find/etc-mtime-7-not-userroot-not-userhadoop /etc/findtest .txt 本文转自 ljohnmail 51CTO博客,原文链接:http://blog.51cto.com/ljohn/1846386,如需转载请自行联系原作者

优秀的个人博客,低调大师

2016全新Linux+Python高端运维班-Linux grep命令及基本正则表达式

本周作业内容: 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 第一种方式: [root@liu/] #chmod-Rgo=---/home/tuser1 [root@liutuser1] #ls-l/home/tuser1/ 总用量4 -rw-------.1rootroot478月2500:01issue 第二种方式: [root@liu/] #rm-rf/home/tuser1/ [root@liu/] #cp-r/etc/skel//home/tuser1 [root@liu/] #chmod-Rg-rwx/home/tuser1/ [root@liu/] #chmod-Ro-rwx/home/tuser1/ [root@liu/] #ls-l/home/tuser1/ 总用量4 -rw-------.1rootroot478月2500:12issue [root@liu/] #ls-ld/home/tuser1/ drwx------.4rootroot40968月2500:12 /home/tuser1/ 2、编辑/etc/group文件,添加组hadoop。 1 2 3 4 5 6 7 第一种方式: [root@liu/] #echo"hadoop:x:3008:">>/etc/group 第二种方式: vim /etc/group 在最下面添加一行: hadoop:x:3009: 保存退出。 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。 1 2 3 4 5 6 vim /etc/passwd 在最下面添加一行: hadoop:x:3008:3008:: /home/hadoop : /bin/bash 保存退出。 [root@liu/] #idhadoop uid=3008(hadoop)gid=3008(hadoop)组=3008(hadoop) 4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。 1 2 3 4 5 6 7 8 9 10 11 12 [root@liu/] #cp-r/etc/skel//home/hadoop [root@liu/] #chmod-Rgo=---/home/hadoop [root@liu/] #ls-la/home/hadoop 总用量32 drwx------.4rootroot40968月2500:33. drwxr-xr-x.19rootroot40968月2500:33.. -rw-------.1rootroot188月2500:33.bash_logout -rw-------.1rootroot1768月2500:33.bash_profile -rw-------.1rootroot1248月2500:33.bashrc drwx------.2rootroot40968月2500:33.gnome2 -rw-------.1rootroot478月2500:33issue drwx------.4rootroot40968月2500:33.mozilla 5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。知识点: 修改文件的属主:chown chown [OPTION]... [OWNER][:[GROUP]] FILE... 用法: OWNER OWNER:GROUP :GROUP Note: 命令中的冒号可用.替换; -R: 递归 chown [OPTION]... --reference=RFILE FILE... 1 2 3 [root@liu/] #chown-Rhadoop:hadoop/home/hadoop/ [root@liu/] #idhadoop uid=3008(hadoop)gid=3008(hadoop)组=3008(hadoop) 6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@liu/] #grep'^[Ss]'/proc/meminfo SwapCached:0kB SwapTotal:2097144kB SwapFree:2097144kB Shmem:3296kB Slab:46576kB SReclaimable:13148kB SUnreclaim:33428kB [root@liu/] #grep-i"^s"/proc/meminfo SwapCached:0kB SwapTotal:2097144kB SwapFree:2097144kB Shmem:3296kB Slab:46584kB SReclaimable:13160kB SUnreclaim:33424kB 7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;知识点: grep [OPTIONS] PATTERN [FILE...] 选项: --color=auto: 对匹配到的文本着色显示; -v: 显示不能够被pattern匹配到的行; -i: 忽略字符大小写; -o: 仅显示匹配到的字符串; -q: 静默模式,不输出任何信息; -A #:after, 后#行 -B #: before, 前#行 -C #:context, 前后各#行 -E:使用ERE; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@liu/] #grep-v"/sbin/nologin"/etc/passwd|cut-d:-f1 root sync shutdown halt liu bash basher testbash centos useradd1 mageia slackware openstacks user1 user2 user3 hadoop 8、显示/etc/passwd文件中其默认shell为/bin/bash的用户; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@liu/] #grep"/bin/bash"/etc/passwd|cut-d:-f1 root liu bash basher testbash centos useradd1 mageia openstacks user1 user2 user3 hadoop 9、找出/etc/passwd文件中的一位数或两位数;知识点: 基本正则表达式元字符: 字符匹配: .: 匹配任意单个字符; []: 匹配指定范围内的任意单个字符 [^]:匹配指定范围外的任意单个字符 [:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:] 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数; *:匹配前面的字符任意次; 例如: grep "x*y" abxy xay xxxxxxy 贪婪模式 .*:任意长度的任意字符; \?:匹配其前面的字符0或1次;即前面的可有可无; \+:匹配其前面的字符至少1次; \{m\}:匹配前面的字符m次; \{m,n\}:匹配前面的字符至少m次,至多n次; \{0,n\}:匹配前面的字符至多n次; \{m,\}:匹配前面的字符至少m次; 位置锚定: ^:行首锚定;用于模式的最左侧; $:行尾锚定;用于模式的最右侧; ^PATTERN$: 用于模式匹配整行; ^$: 空行; ^[[:space:]]*$ \< 或 \b:词首锚定;用于单词模式的左侧; \> 或 \b:词尾锚定;用于单词模式的右侧; \<PATTERN\>:匹配整个单词; 分组: \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理; \(xy\)*ab 1 [root@liu/] #grep-E-o"\<[0-9]{1,2}\>"/etc/passwd 10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; 1 2 3 4 5 6 7 8 [root@liu/] #grep"^[[:space:]]\+"/boot/grub/grub.conf root(hd0,0) kernel /vmlinuz-2 .6.32-431.el6.i686ro root=UUID=3fcabd0f-e9fb-4618-918d-c9e004fe6a59rd_NO_LUKS KEYBOARDTYPE=pcKEYTABLE=usrd_NO_MDcrashkernel=autoLANG=zh_CN.UTF-8 rd_NO_LVMrd_NO_DMrhgbquiet initrd /initramfs-2 .6.32-431.el6.i686.img 11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; 1 2 3 4 5 6 7 8 9 10 11 12 13 [root@liu/] #grep"^#[[:space:]]\+[^[:space:]]\+"/etc/rc.d/rc.sysinit #/etc/rc.d/rc.sysinit-runonceatboottime #TakeninpartfromMiquelvanSmoorenburg'sbcheckrc. #CheckSELinuxstatus #Printatextbanner. #Onlyreadthisonce. #Initializehardware #Setdefaultaffinity #Loadotheruser-definedmodules #Loadmodules(forbackwardcompatibilitywithVARs) #Configurekernelparameters #Setthehostname. ... 12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行; 1 2 3 4 5 6 7 8 9 10 11 12 13 [root@liu/] #netstat-tan|grep"LISTEN[[:space:]]\+$" tcp000.0.0.0:1110.0.0.0:*LISTEN tcp000.0.0.0:220.0.0.0:*LISTEN tcp00127.0.0.1:6310.0.0.0:*LISTEN tcp00127.0.0.1:250.0.0.0:*LISTEN tcp000.0.0.0:336610.0.0.0:*LISTEN tcp00:::36996:::*LISTEN tcp00:::111:::*LISTEN tcp00:::22:::*LISTEN tcp00::1:631:::*LISTEN tcp00::1:25:::*LISTEN 或者使用 egrep 命令 netstat -tan| egrep "LISTEN[[:space:]]+$" 13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息; 1 2 3 4 5 6 7 8 9 10 [root@liu/] #useraddbash [root@liu/] #useraddtestbash [root@liu/] #useraddbasher [root@liu/] #useraddnologin-s/sbin/nologin [root@liu/] #grep"^\(\<[[:alpha:]]\+\>\).*\1$"/etc/passwd sync :x:5:0: sync : /sbin : /bin/sync shutdown :x:6:0: shutdown : /sbin : /sbin/shutdown halt:x:7:0:halt: /sbin : /sbin/halt bash :x:501:501:: /home/bash : /bin/bash nologin:x:504:504:: /home/nologin : /sbin/nologin 本文转自 ljohnmail 51CTO博客,原文链接:http://blog.51cto.com/ljohn/1843661,如需转载请自行联系原作者

优秀的个人博客,低调大师

Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——1.4 本章小结

1.4 本章小结 本章的内容主要分为两大部分。第一部分为加载操作系统;第二部分为32位保护、分页模式下的main函数的执行做准备。从借助BIOS将bootsect.s文件加载到内存开始,相继加载了setup.s文件和system文件,从而完成操作系统程序的加载。接下来设置IDT、GDT、页目录表、页表以及机器系统数据,为32位保护、分页模式下的main函数的执行做准备。一切就绪后,跳转到main函数执行入口,开始执行main函数。

优秀的个人博客,低调大师

Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.13 开启中断

2.13 开启中断 现在,系统中所有中断服务程序都已经和IDT正常挂接。这意味着中断服务体系已经构建完毕,系统可以在32位保护模式下处理中断,重要意义之一是可以使用系统调用。可以开启中断了!执行代码如下: //代码路径:include/asm/system.h: #define sti() __asm__ ("sti"::) //代码路径:init/main.c: void main(void) { … sti(); … } 图2-29给出了开中断后的效果,注意其中EFLAGS中的变化。

优秀的个人博客,低调大师

Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.15 本章小结

2.15 本章小结 本章开始执行以main()函数为代表的用C语言编写的操作系统内核代码,内容涉及硬件初始化、为内核及进程的正确运行所做的初始化、激活进程0。硬件初始化又可以分为两类:一类是与主机有关的硬件初始化,包括规划内存格局、设置及初始化缓冲区、设置及初始化虚拟盘、初始化mem_map、初始化缓冲区管理结构等;另一类是与外设有关的初始化,包括设置根设备、初始化软盘、初始化硬盘等。为内核及进程的正确运行所做的初始化,包括中断服务程序的挂接、初始化进程0等。最后就是用仿中断的方法将进程0的特权级由0翻转到3,实现激活进程0。

优秀的个人博客,低调大师

Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——3.4 本章小结

3.4 本章小结 本章详细讲解了进程0创建进程1的全过程。后续所有进程的创建过程与这个过程基本相同。透彻理解这个创建过程,为理解后续的进程创建打下坚实的基础。本章还讲解了操作系统启动以来内核做的第一次进程调度,内容涉及了进程调度的很多代码,为更深入地理解进程调度起到了很好的铺垫作用。最后,本章详细讲解了进程1第一次执行后所做的设置硬盘信息、格式化虚拟盘、加载根文件系统等工作。

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册