2019-07-23 15:42:08 qq_31293337 阅读数 34

CentOS 7 NIS Client setting

举例当前的NIS域名为"nisdomain",以下是CentOS 7 的NIS Client端配置过程:
1.修改/etc/sysconfig/network 文件内容
执行vi /etc/sysconfig/network,内容修改如下:
在这里插入图片描述
2.修改用户密码的认证顺序文件:
执行 vi /etc/nsswitch.conf
修改内容如下:
在这里插入图片描述
3.输入NIS服务器信息
执行 vi /etc/yp.conf
修改以下内容:
在这里插入图片描述
4.修改系统认证文件:
执行 vi /etc/sysconfig/authconfig
设置 USENIS=yes
在这里插入图片描述

执行 vi /etc/pam.d/system-auth
修改为:pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok
在这里插入图片描述
5.激活与重启服务:
systemctl enable rpcbind
systemctl start rpcbind
systemctl start ypbind

6.测试ypbind
#yptest
观察是否出现相关的测试信息,如果能看到服务器的信息说明NIS配置成功。

7.将服务设为开机启动:
vi /etc/rc.d/rc.local
在这里插入图片描述

Solaris 9 NIS Client setting

后续持续更新中。。。。。。。。。。。。。。。。。。。。。

2019-08-23 15:30:07 jack_wang128801 阅读数 51

Linux线程

一:Linux线程介绍

  • 线程:一个程序中的一条执行路线就叫做线程(thread).更准确的定义是:线程是“一个进程内部的控制序列”

  • 一个进程至少都是一个执行线程

  • 线程在进程内部运行,本质是在PCB都要比传统的进程更加轻量化

  • 在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化

  • 透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理的分配刚给每个执行流,就形成了线程执行流

  • 线程运用的目的:能够更高效的利用CPU资源

二:线程的优点

  • 创建一个新线程的代价要比创建一个新进程小的多
  • 与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多
  • 线程占用的资源比进程少很多
  • 能够充分利用多处理器的可行数量
  • 在等待慢速I/O 操作结束的同时,程序可执行其他的计算任务
  • 计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现
  • I/O 密集型应用,为了提高性能,将I/O 操作重叠。线程可以同时等待不同的I/O操作

三:线程异常

  • 单个线程如果出现除零,野指针问题导致线程奔溃,进程也会随着奔溃
  • 线程是进程的执行分支,线程出异常,就类似进程出异常,进而触发信号机制,终止进程,进程终止,该进程内的所有线程也就是随机退出

四:线程用途

  • 合理的使用多线程,能提高CPU密集型程序的执行效率
  • 合理的使用多线程,能提高IO密集型程序的用户体验

【对线程和进程的理解】

在这里插入图片描述

  • 创建一个新的进程就相当于开了一个新的加工厂(成本高)
  • 创建一个新的线程,就相当于在原加工厂的基础上新增了一个生产线(成本低)

每次创建一个新的进程,系统会分配一个新的虚拟地址空间给新进程,
而创建一个新的线程,系统不需要重新分配虚拟地址,新的线程可以使用原来线程的虚拟地址空间

【PCB和线程/进程的关系】

一个PCB可能是线程也可能是一个进程

线程是运行在进程之中的(一个进程包含了若干个线程 )

一个进程对应一块虚拟地址空间,线程的作用是复制了一个指向该虚拟地址空间的PCB,使得多个PCB指向同一块虚拟地址空间

在这里插入图片描述

1.线程与进程的区别
【进程线程的对比】

进程:偏向于管理的资源(管理内存,管理打开的文件)

线程:偏向于调度与执行(和进程类似,也是抢占式的调度)

一个进程中包含多个线程的时候,CPU以线程为单位来调用.

  • 在Linux中也把线程叫做轻量级进程(LWP)

【线程相比于进程的优点】

  • 1.创建/销毁开销更小
  • 2.切换/调度的开销更小
  • 3.线程占用的资源更小
    本质上:线程之间共享同一块虚拟地址空间

本质:同一个进程间的线程之间使用同一个的虚拟地址空间

【线程相比于进程的缺点】

  • 健壮性降低:一个线程异常终止,会导致整个进程异常终止
  • 编程/调试难度变大:
  • 编程难度提高

​ 1.对线程的可靠性要求更高
​ 2.线程会引发线程安全问题

【多线程/多进程的引用场景】

  • 1.cpu密集型: while(1);
  • 2.IO密集型:

1.通过网络进行输入输出
2.响应UI界面(界面显示和数据计算多线程完成,防止由于数据计算太久导致界面卡死)

【 线程之间共用的资源】

  • 1.虚拟地址空间
  • 2.文件描述符表

【线程之间不共用的资源】

  • 1.栈(函数调用栈,局部变量)
    在这里插入图片描述
  • 在共享内存区:分别记录着除主线程(main函数所对应的线程)之外其他栈的信息.
  • 2.上下文信息(CPU中的寄存器)
  • 只要代码写的正确线程间可以访问对方的资源
  • 3.错误码(每个线程有自己的errno)----> thread local
    在这里插入图片描述

以上所有内容一定要掌握!!!线程和进程的区别


2.滑稽吃鸡的例子

【问题描述】
100个滑稽吃100只鸡,分别以
多线程和多进程的方式来模拟场景

【多进程吃鸡】
在这里插入图片描述
【多线程吃鸡】
在这里插入图片描述

  • 多进程模式:一个滑稽一只鸡,效率低下
  • 多进程模式:多个滑稽吃一只鸡,效率高.但是一个桌子(进程)中的滑稽(线程)过多,在吃鸡的时候就开始争抢,引入新的问题,如何解决滑稽争抢的问题?

【同步与互斥】

1.线程不是越多越好,达到一定数目的时候效率就不能提升了
2.线程过多,多个线程同时访问同一分资源,就会打架(互斥方式解决)
3.某个线程可能一直得不到机会执行,线程饥饿(同步方式解决)
4.如果某个线程异常终止,整个进程都异常终止了

【线程的概要】

线程和进程结合来看,进程有点重,性能低下.为了提高性能提出了轻量型的进程->线程
进程相互独立,一个线程挂了,进程全奔。
同一个进程中的线程间有共享的资源,也有独立拥有的。
进程—> 工厂
线程—> 流水线
线程是抢占式执行的,线程执行的先后顺序,靠操作系统来决定.


2016-07-08 00:26:55 Test_dx 阅读数 2192
  • Linux|XAMPP Linux 5.6.8 64bit 外网无法访问 可以通过修改下面的文件
vi opt/lampp/etc/extra/httpd-xampp.conf

在如下代码段中 将Require Local 修改替换为 Require all granted

# since XAMPP 1.4.3
<Directory "/opt/lampp/phpmyadmin">
    AllowOverride AuthConfig Limit
    Require all granted
</Directory>

<Directory "/opt/lampp/phpsqliteadmin">
    AllowOverride AuthConfig Limit
    Require all granted
</Directory>

**意思就是将接受本地请求授权为接受所有请求
此时xampp和PHPmyadmin页面就都可以自由的从外网访问了!**

2019-07-29 09:45:50 xingyu97 阅读数 46

写在前面

       今天看到linux书籍介绍&&和||的区别时,说&&把两个命令连接在一起时,只有当第一个命令成功时(即返回值为0)才运行第二个命令。而||把两个命令连接在一起时,只有当第一个命令不成功时(即返回值为非0)才运行第二个命令。当时想了一会原因直接想懵了,我想着使用&&时,返回值为0了,就可以直接判断&&的结果了,所以第二条命令不会执行,结果是返回值为0了才要执行第二条命令。上网搜索了原因才知道是自己想岔了。

&&执行过程

语法格式如下:

command1 && command2 [&& command3 ...] 

       当使用&&连接两条命令时,正确的运行过程是第一条命令执行成功后,然后执行第二条命令。第一条命令执行成功之后,返回值是0,但是第一条命令的返回值不是&&的比较值,而是让第一条命令的返回值与0进行比较(即$? == 0)的结果作为&&的比较值。第一条命令执行成功时,$? == 0的结果为True,还无法确定&&的最终结果,所以还需要执行第二条命令才能知道&&的最终结果。当第一条命令执行不成功(即返回值非0),$? == 0的结果为False,所以对于&&来说发生短路,&&的最终结果就是指令执行成功,第二条指令才会执行。
       &&的使用应该是连接那些逻辑上具有顺序关系的命令,例如只有当成功创建一个文件夹时,才可以进入文件夹并进行相关操作,如果失败就不要进入文件夹了。

mkdir new && cd new

||执行过程

语法格式如下:

command1 || command2 [|| command3 ...] 

       而当使用||连接两条命令时,正确的运行过程是第一条命令执行失败后,然后执行第二条命令。第一条命令执行失败之后,返回值为非0,$? == 0的结果为False,还无法知道||的最终结果,所以还需要执行第二条命令才能知道||的最终结果。当第一条命令执行成功(即返回值为0),$? == 0的结果为True,所以对于||来说发生短路,||的最终结果就是指令执行成功,第二条指令不执行。
       ||适用于那些可替换命令的连接,例如如果删除一个文件夹,事先不知道文件夹中有内容,那么会删除失败,如果此时在||右边使用强制删除选项,那么文件夹一定能删除。

rm new || rm -rf new

linux部分符号的用法

符号 说明
& 让命令在后台运行
| 管道
&& 当前面的命令执行成功时,后面的命令才会执行
|| 当前面的命令执行成功时,后面的命令不再执行
> 标准输出重定向(文件存在先删除文件,然后写入内容,不存在则创建)
>> 标准输出重定向(在文件最后添加)
2> 标准错误重定向
< 标准输入重定向
2>> 标准错误重定向(在文件最后添加)
&> 标准输出、标准错误重定向
; 什么也不做,返回值为0

       linux中符号太多了,符号之间相互组合又有不同的含义,全都记住也不太可能,还是要多靠平时的积累。

2019-10-10 09:19:09 mdykj33 阅读数 79

前言

学习 Linux,不仅限于学习各种命令,了解整个 Linux 文件系统的目录结构以及各个目录的功能同样至关重要。

最开始我们对目录有所了解就可以了。随着对Linux使用的经验的加深,我们会了解越来越多的目录。对目录的功能知道得越多,我们对Linux系统的工作原理就理解的越深刻,理解操作系统的工作原理,更有助于我们更为规范地使用和理解系统中每个目录存在的意义,直至最后几乎知道系统中的每个文件。

Linux 基金会发布了 FHS 标准。多数 Linux 发行版系统都遵循这一标准。

FHS(Filesystem Hierarchy Standard),文件系统层次化标准,该标准规定了 Linux 系统中所有一级目录以及部分二级目录(/usr 和 /var)的用途。发布此标准的主要目的就是为了让用户清楚地了解每个目录应该存放什么类型的文件。
我们可以使用一个命令:man hier ,通过这个命令的输出,就知道对文件系统目录分类的 FHS 标准。

下面我对Linux常见的一些目录进行分类,分为系统启动类,命令类,用户类,外设类,数据类,软件类共六类。

(注:本文以CentOS7操作系统为例,其他Linux发行版可能略有不同。)

系统启动类目录

子目录  功能
/boot 系统启动目录,保存与系统启动相关的文件
如内核文件/boot/vmlinuxz
启动引导程序文件/boot/grub等
/lib 包含开机时核心系统程序使用的共享库文件,与Windows系统下的DLL类似
/etc 存放所有的系统管理所需要的配置文件和子目录。
如用户账号列表/etc/passwd
自动化任务运行/etc/cron.daily/等

命令类目录

子目录  功能
/bin bin是Binary的缩写,存放对用户和系统“必须”的命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行。
/sbin 保存与系统环境设置相关“必须”的命令,只有 root 可以使用这些命令进行系统环境设置,但其他一些命令也可以允许普通用户执行
/usr/bin 一般存放的只是对用户和系统来说“不是必须的”命令。
/usr/sbin 一般存放用于系统管理的“不是必须的”命令,如多数服务程序。

用户类目录

子目录 功能
/home 普通用户的主目录。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户user的主目录就是 /home/user
/root root 账户的主目录。

外设类目录

子目录  功能
/dev 设备文件保存位置,内核将它能够识别的所有设备存放在此目录
/media 挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
/mnt 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区

数据类目录

子目录 功能
/sys 虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存到内存中。主要保存与内核相关的信息
/proc 虚拟文件系统。主要保存系统的内核、进程、外部设备状态和网络状态等,从中可以看到内核如何监管计算机的。
如 /proc/cpuinfo 是保存 CPU 信息的
/proc/devices 是保存设备驱动的列表的
/proc/filesystems 是保存文件系统列表的
/srv 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
/tmp 一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下

/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。

子目录  功能
/var/lib 程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中
/var/log 登陆文件放置的目录,其中所包含比较重要的文件如 /var/log/messages, /var/log/wtmp 等。
/var/tmp 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再删除

软件类目录

子目录 功能
/opt 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包。

/usr目录,全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。

子目录 功能
/usr/lib 应用程序调用的函数库保存位置
/usr/local 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置
/usr/share 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录
/usr/src 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。
/usr/include C/C++ 等编程语言头文件的放置目录

 

注:本文为Yo原创,未经许可不得在任何平台转载,侵权必究。如需转载,可关注微信公众号:技术训练营,在后台留言,与作者联系,取得许可才能转载~

 

没有更多推荐了,返回首页