unix

unix环境高级编程——文件IO

南楼画角 提交于 2020-04-03 22:11:16
可用的文件IO函数:打开文件,读文件,写文件等(不带缓冲的IO函数(指每个read或write函数都调用内核的一个系统调用))    不是ISO C的组成部分,但是时POSIX和SUS的组成部分 UNIX系统中常用的文件IO函数:open,read,wirte,lseek,close函数 当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符(非负整数) UNIX的shell把文件描述符0与标准输入关联,文件描述符与标准输出关联,文件描述符2与标准错误输出关联,在POSIX标准中,对应的被替换为符号常量STDIN_FLLENO,SEDOUT_FLLENO,STDERR_FLLENO  <unistd,h> 函数open和openat (fcntl.h) int open(const char* path,int oflag,.../*mode_t mode*/); int openat(int fd,const char* path,int oflag,.../*mode_t mode*/); 将最后一个参数写为...,表明余下的参数的数量以及类型是可变的 由open和openat函数返回的文件描述符一定是最小的未用的描述符数值 若path参数指定为绝对路径,fd参数无用,openat函数相当于open函数    path指定的是相对路径

转:Unix传奇(上篇)

别等时光非礼了梦想. 提交于 2020-04-02 05:55:12
参考自: http://coolshell.cn/articles/2322.html 了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今。要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技术,而应该是去 —— 认认真真地了解和回顾历史。 Unix是目前还在存活的操作系统的元老了,走过了40年的历程(参看《 Unix 40年:Unix年鉴 》、《 Unix 40年:昨天,今天和明天 》)。在技术更新如此迅速的计算机世界的今天,Unix始终保持它那神圣的光环,它那曲折和令人叹息的历史,以及由它引发的思想变革,对当今计算机文化造成的深远影响,这40年所产生的人和事,让它成为了一个传奇,不能不让人为之惊叹。 这是一段所有从事计算机行业人员尤其是软件开发人员需要了解的历史。Unix的传奇历史是整个计算机世界文化最具代表性的,它对整个计算机世界文化的影响也是最巨大,最深远的。他给人带来的不单单的对过去的回味,更为我们带来了计算机世界的新思潮。 了解这段的历史的人,才能体会计算机世界变迁过程中的是是非非,才能了解计算机世界中的文化,从而才能参与到整个计算机革命的大潮中。希望这段历史

supervisor介绍及配置文件详解

和自甴很熟 提交于 2020-04-01 09:27:11
一、简介 supervisord的官网: http://supervisord.org 。 看懂英文的可以不用看我的博客,直接看文档就行了,文档写得非常好。点个赞!!   Supervisor是一个客户/服务器系统,它可以在类Unix系统中管理控制大量进程。Supervisor使用python开发,有多年历史,目前很多生产环境下的服务器都在使用Supervisor。 Supervisor的服务器端称为supervisord,主要负责在启动自身时启动管理的子进程,响应客户端的命令,重启崩溃或退出的子进程,记录子进程stdout和stderr输出,生成和处理子进程生命周期中的事件。可以在一个配置文件中配置相关参数,包括Supervisord自身的状态,其管理的各个子进程的相关属性。配置文件一般位于/etc/supervisord.conf。 Supervisor的客户端称为supervisorctl,它提供了一个类shell的接口(即命令行)来使用supervisord服务端提供的功能。通过supervisorctl,用户可以连接到supervisord服务器进程,获得服务器进程控制的子进程的状态,启动和停止子进程,获得正在运行的进程列表。客户端通过Unix域套接字或者TCP套接字与服务端进行通信,服务器端具有身份凭证认证机制,可以有效提升安全性。当客户端和服务器位于同一台机器上时

开发人员行走Unix的随身四艺

寵の児 提交于 2020-03-29 17:28:14
Unix系统永远只会越来越多,开发人员就没必要特意学习它们的安装、配置和管理了,就全部交给集成人员吧。 但开发人员行走于Unix之间,依然有四样东西要熟练。 一、VI 虽然Unix上的文本编辑器已经越来越好用,但不在Console前面,网速也不够连XWindows的时候,还是要依赖VI。 回想VI的时代背景,发现VI对开发人员已经周到得离谱了,热键多到你双手不离键盘就能完成大半编辑工作。 建议自己制作一张自己认为有用,但又经常忘记的命令的sheet,拿出考试的力气把它背熟。 二、文本处理 开发人员在Unix下干得最多的除了Make和除Bug外,大概就是处理日志文件、业务文件进行查错和统计了。 只会more和grep是不够的,开发老手会把awk,sed,grep,sort,unique,wc这些文本处理命令,通过管道玩具式的拆卸拼装,最后完成一件原本以为非编写大段代码不可的工作。周到的参数设定,让人再一次感叹那个简单的年代,复杂到极致的设计.......怪不得《Unix 编程艺术》的作者有那么骄傲的自觉。 比如车东的每月访问TOP10 统计脚本: awk -F ' t' '{ print $ 4 }' 2004_2 . txt| grep chedong . com / tech / | sort |uniq -c| sort -rn|head - 10 awk -F '/t'

初步了解Unix系统的I/O模式

ε祈祈猫儿з 提交于 2020-03-29 13:37:12
I/O模式 对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。 当一个read操作发生时,它会经历两个阶段: 等待数据准备 将数据从内核拷贝到进程中 因为这两个阶段,Unix系统的IO分为五种模式: 阻塞 I/O(blocking IO) 非阻塞 I/O(nonblocking IO) I/O 多路复用( IO multiplexing) 信号驱动 I/O( signal driven IO) 异步 I/O(asynchronous IO) 阻塞 I/O 特点就是在IO执行的两个阶段,用户进程都被block了。 Linux中,默认情况下所有的socket都是blocking 非阻塞 I/O 特点是用户进程要不断得通过系统调用询问内核,文件描述的数据是否准备好了,这种方式称为轮询(polling)。 如果数据还没有准备好,用户进程不会被阻塞,而是立刻返回一个error。用户进程收到error可以再次进行read操作。 I/O 多路复用 特点是单个用户进程可以处理多个 I/O 事件,减少多进程切换带来的系统开销。 分成三种形式: select poll epoll select 或者 poll 可以监视多个文件描述符,期间会被阻塞,任何一个描述符的数据准备好后通知用户进程,进程调用 recvfrom

socket通信原理

China☆狼群 提交于 2020-03-26 16:50:35
1、什么是socket 我们知道进程通信的方法有管道、命名管道、信号、消息队列、共享内存、信号量,这些方法都要求通信的两个进程位于同一个主机。但是如果通信双方不在同一个主机又该如何进行通信呢?在计算机网络中我们就学过了tcp/ip协议族,其实使用tcp/ip协议族就能达到我们想要的效果,如下图(图片来源于《tcp/ip协议详解卷一》第一章1.3)           、                            图一 各协议所处层次 当然,这样做固然是可以的,但是,当我们使用不同的协议进行通信时就得使用不同的接口,还得处理不同协议的各种细节,这就增加了开发的难度,软件也不易于扩展。于是UNIX BSD就发明了socket这种东西,socket屏蔽了各个协议的通信细节,使得程序员无需关注协议本身,直接使用socket提供的接口来进行互联的不同主机间的进程的通信。这就好比操作系统给我们提供了使用底层硬件功能的系统调用,通过系统调用我们可以方便的使用磁盘(文件操作),使用内存,而无需自己去进行磁盘读写,内存管理。socket其实也是一样的东西,就是提供了tcp/ip协议的抽象,对外提供了一套接口,同过这个接口就可以统一、方便的使用tcp/ip协议的功能了。百说不如一图,看下面这个图就能明白了。                                         

常见问题

给你一囗甜甜゛ 提交于 2020-03-25 13:22:01
[root@iZbp13ldkm1p7rw6eb5wteZ log]# cat /var/log/secure Mar 22 09:26:53 iZbp13ldkm1p7rw6eb5wteZ sshd[7077]: Invalid user admin from 121.239.140.210 port 20108 Mar 22 09:26:53 iZbp13ldkm1p7rw6eb5wteZ sshd[7077]: input_userauth_request: invalid user admin [preauth] Mar 22 09:26:53 iZbp13ldkm1p7rw6eb5wteZ sshd[7077]: pam_unix(sshd:auth): check pass; user unknown Mar 22 09:26:53 iZbp13ldkm1p7rw6eb5wteZ sshd[7077]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser=rhost=121.239.140.210 Mar 22 09:26:55 iZbp13ldkm1p7rw6eb5wteZ sshd[7077]: Failed password for invalid

Python 环境搭建

此生再无相见时 提交于 2020-03-25 08:38:40
Python 环境搭建 本章节我们将向大家介绍如何在本地搭建Python开发环境。 Python可应用于多平台包括 Linux 和 Mac OS X,这些系统已经自带python支持,不需要再配置安装了。 Windows 下直接下载最新版的 Python 2.7.9,安装的时候注意选择 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。) Win 9x/NT/2000 Macintosh (Intel, PPC, 68K) OS/2 DOS (多个DOS版本) PalmOS Nokia 移动手机 Windows CE Acorn/RISC OS BeOS Amiga VMS/OpenVMS QNX VxWorks Psion Python 同样可以移植到 Java 和 .NET 虚拟机上。 Python下载 Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到: Python官网: http://www.python.org/ 你可以在一下链接中下载Python的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。 Python文档下载地址: www

python环境搭建

我的未来我决定 提交于 2020-03-25 08:38:22
Python 环境搭建 本章节我们将向大家介绍如何在本地搭建Python开发环境。 Python可应用于多平台包括 Linux 和 Mac OS X。 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。) Win 9x/NT/2000 Macintosh (Intel, PPC, 68K) OS/2 DOS (多个DOS版本) PalmOS Nokia 移动手机 Windows CE Acorn/RISC OS BeOS Amiga VMS/OpenVMS QNX VxWorks Psion Python 同样可以移植到 Java 和 .NET 虚拟机上。 Python下载 Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到: Python官网: http://www.python.org/ 你可以在以下链接中下载 Python 的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。 Python文档下载地址: www.python.org/doc/ Python安装 Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。

Python 环境搭建

喜欢而已 提交于 2020-03-25 08:37:51
Python 环境搭建 本章节我们将向大家介绍如何在本地搭建Python开发环境。 Python可应用于多平台包括 Linux 和 Mac OS X。 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。) Win 9x/NT/2000 Macintosh (Intel, PPC, 68K) OS/2 DOS (多个DOS版本) PalmOS Nokia 移动手机 Windows CE Acorn/RISC OS BeOS Amiga VMS/OpenVMS QNX VxWorks Psion Python 同样可以移植到 Java 和 .NET 虚拟机上。 Python下载 Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到: Python官网: http://www.python.org/ 你可以在以下链接中下载 Python 的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。 Python文档下载地址: www.python.org/doc/ Python安装 Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。