Fedora 20正式发布,带来哪些更新呢?

Fedora 20正式发布,带来哪些更新呢?

Fedora 20 已于2013年12月17日正式发布。正如我们大家所知,Fedora 是一款 基于 Linux 的操作系统,一个红帽赞助的社区项目 。The four foundations of freedom, features, friends, and first are the core values of the Fedora community.历经十余年的发展,Fedora已成为最具知名度的发行版之一。

value_fedoraFedora 20 带来了那些更新呢?看官方 Fedora 20 发​行​注​记​中的介绍,更新内容包括了针对系统管理员,桌面应用,开发者,特定爱好者的若干更新。

Fedora_logo

其中,主要是一些应用工具的升级,以及增加更多应用资源。
对于开发者,增加了Developer Assistant,Perl升级到5.18,更新了 python-setuptools ,Gcc以及一些Web开发资源。
对于桌面使用者,桌面很炫,说实话没有太大的更新,过多的Linux的桌面本身就有些鸡肋了..管理方面改变不大。3D打印,这个玩意儿,不大懂..言多必失..
其它的还需要补充…

更多阅读:

Fedora :http://fedoraproject.org/
Ubuntu  :http://www.ubuntu.com/
Linux   Mint  :http://www.linuxmint.com/

服务器日志备份的一点小问题

服务器日志备份的一点小问题

前两天一个朋友打电话聊到他遇到的问题:自己动手写的日志备份脚本有问题,当移走日志文件后,应用程序不再写日志到新的文件中,kill 掉应用后才可以..

他的脚本可能是这样的:

mv /log/a_log.trace /log_bak/a_log.trace_xyz 
touch  /log/a_log.trace

相信各位大拿肯定已经知道原因,但是我还在这里说说,为那些可能想知道原因的小童鞋。

 

那么,弄清楚open函数或者sys_open系统调用,知道文件描述符,即使你没有写过C代码,也知道原因了吧!

文件已经被你mv走了,可以原应用还在运行,仍旧保留着原文件的文件描述符,可是文件其实已经不存在了…

解决办法:不要删除或者移走日志文件,清空这个文件就可以了!

cp -p /log/a_log.trace /log_bak/a_log.trace_xyz 
cp /dev/null /log/a_log.trace

再来深入一下吧:

什么是虚拟文件系统?

    VFS(Virtual File System)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat 提供接口机制。在其下是实体的文件系统。虚拟文件系统的主要功用,在于让上层的软件,能够用单一的方式,来跟底层不同的文件系统沟通。在操作系统与之下的各种文件系统之间,虚拟文件系统提供了标准的操作接口,让操作系统能够很快的支持新的文件系统。

一切皆是文件!

  一组在逻辑上具有完整意义的信息项的系列。除了普通文件,其他诸如目录、设备、套接字等 也以文件被对待。总之,“一切皆文件”。

文件对象

文件对象是已打开的文件在内存中的表示,主要用于建立进程和磁盘上的文件的对应关系。它由sys_open() 现场创建,由sys_close()销毁。文件对象和物理文件的关系有点像进程和程序的关系一样。当我们站在用户空间来看 待VFS,我们像是只需与文件对象打交道,而无须关心超级块,索引节点或目录项。因为多个进程可以同时打开和操作 同一个文件,所以同一个文件也可能存在多个对应的文件对象。文件对象仅仅在进程观点上代表已经打开的文件,它 反过来指向目录项对象(反过来指向索引节点)。一个文件对应的文件对象可能不是惟一的,但是其对应的索引节点和 目录项对象无疑是惟一的。

 struct file {
    ……
    struct list_head        f_list;        /*文件对象链表*/
    struct dentry          *f_dentry;       /*相关目录项对象*/
    struct vfsmount        *f_vfsmnt;       /*相关的安装文件系统*/
    struct file_operations  *f_op;           /*文件操作表*/
    ……
};

文件I/O

sys_open()系统调用打开或创建一个文件,成功返回该文件的文件描述符。sys_read()系统调用用于从已打开的文件读取数据。如read成功,则返回读到的字节数。如已到达文件的尾端,则返回0。

sys_open

 

更多,请再进一步探索..

Ubuntu12 一步步安装配置(系统,FTP,TELNET..设置)

Ubuntu12 一步步安装配置(系统,FTP,TELNET..设置)

最近重新安装了Linux 操作系统,发现一些常用的配置又忘记了,需要一个个的重新google查阅进行设置,今天把我个人的操作记录下来.

这是我的几个步骤,由于记录时简单用E文写的,就粘上来了:

  1. install ubuntu linux os using U-DISK beside Widows 7 ,Warning: choose  the place where  grub.cfg  should  locate in.
  2. wlan drivers, maybe you need to connect to an available wried network, download and install the driver,and then active it.

  3. Disable the guest session.

  4. Setting the ftp and telnet server.

  5. Set up Root account.

linux logo

具体描述一下:

1.使用U盘安装,首先制作好USB启动盘,由于PC比较老(2008年的机器),设置还小麻烦;如果安装windows 7 和linux双系统,首先需要装Windows ,否则需要修复BCD,挺麻烦。不要把Boot选择到你的U盘分区,否则..,每次要进Ubuntu还需要那个U盘。

2.安装好了,没有无线网卡驱动,还需要联网获取,如果有线网也不能用,那就要手工找了,电脑也该换了,因为太老了..

3.登录系统,禁用客人会话( guest session),具体方法很简单,在etc/lightdm/lightdm.conf 添加

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
allow-guest=false

Ubuntu14.04禁用客人会话 更改配置  /usr/share/lightdm/lightdm.conf.d /50-unity-greeter.conf

[SeatDefaults]
greeter-session=unity-greeter

以前我写过这个方法:https://www.gigiwangs.com/archives/564。有些网站明明从这里复制的,还..算了,毕竟自己太菜…

4.安装Telnet和Ftp服务端程序

sudo apt-get install telnetd
sudo apt-get install vsftpd

这个在Ubuntu下安装太简单,几乎不需要任何设置就可用,Fedora就不一样,Selinux,防火墙都要设置,这里也没有了..

5.启用Root用户,Ubuntu 12是默认禁止root登录的,把它启用吧..这个也很简单:

sudo passwd root

6.安装一些常用软件和库…..

AIX db2嵌入式SQL(sqc)编译

AIX db2嵌入式SQL(sqc)编译

编译SQC

使用C语言编写嵌入式SQL以访问DB2的程序,DB2预编译器可以将SQL语法直接转换为DB2行时服务应用程序编程接口(API)调用。

bind的主要作用是根据SQC中的SQL语句使用的表和操作指定访问时DB要使用的策略,是一种优化作用,以加快数据访问的速度。

aix_sqc 编译

 

预编译命令:

db2 prep *.sqc bindfile

bindfile参数作用是生成和sqc文件同名的.bnd文件。

接下来就和一般的C程序一样进行编译了,来看看这个简单的Makefile,AIX 编译64位的应用。

CHMOD =chmod 755
RM =rm -f
#export OBJECT_MODE=64
DB2_HOME=/opt/IBM/db2/V9.1
CFLAGS=  -q64 -qchars=signed -I.  -g -I$(DB2_HOME)/include
LDFLAGS = -b64 -g -L $(DB2_HOME)/lib64 -ldb2
DB2 =db2
BINHOME=$(HOME)/batch/bin

CC= xlc_r

#DB CONFIGURE
DBNAME = db2name
USEID = db2user
PASWD = db2pswd

ALL =$(BINHOME)/ApsBatchWS
all:$(ALL)
.SUFFIXES:
.SUFFIXES:.sqc .cpp .c .o
OBJS = dbcons.o serv.o util.o log.o flow.o

.sqc.o:
        $(DB2)  connect to $(DBNAME) user $(USEID) using $(PASWD)
        @$(RM)   *.bnd $*.c
        @$(DB2)  prep $< bindfile
        @$(DB2)  bind $*.bnd
        @$(DB2)  connect reset
        @$(DB2)  terminate
        @$(CC)  $(CFLAGS) -s -c  $*.c
.c.o:
        $(CC) -c $(CFLAGS)  $<
.cpp.o:
        $(CC) -c  $(CFLAGS)  $<

$(ALL) : $(OBJS)
        $(CC) $(CFLAGS)  $(OBJS) $(LDFLAGS) -o  $@
        $(CHMOD)  $@

clean:
        $(RM) *.o dbcon.c dbcons.bnd $(ALL)

看这里还有好多的例子:点击这里查看

sqc的编写方法这里就不再赘述,相关的文章已经太多了。

 

关于Google Nexus 7(二代) 外设的那些事

关于Google Nexus 7(二代) 外设的那些事

首先,无需Root,Nexus 7是直接可以连接鼠标和键盘的。虽然很蛋疼,但确是支持的,仅需一条OTG数据线,这点是靠谱的。
那么,U盘或者移动硬盘呢?你可以选择Root,也可以不Root。尽管Nexus 7已经有16G或者32G更大的存储空间,但是偶尔需要直接读取
移动存储中的照片,电影等文件,那么可以在未Root的Nexus 7使用 Nexus Media Importer(收费软件,也有对应免费版本),如果Root,可以选择StickMount。在Google play上搜索或者搜索OTG,这样的软件一大堆。安装之后,按照提示,使用任意文件管理器便可轻松搞定移动外设的文件管理。

nexus7

无线网卡呢,当然也可以!使用 PPP Widget ,这是一款无广告无添加的免费软件,使用条件是Root,系统低于4.3.
Andr​​oid 4.3用户:似乎有谷歌内核模块加载禁用! PPP Widget可能会停止工作!要怪就怪谷歌。

点击这里查看:Nexus Media Importer

点击这里查看:StickMount

点击这里查看:PPP Widget

稍后会在分享一下Nexus 7的好软件,有些没有经过专门优化,可能在Goolge Play无法搜索到,因此也不列出。

AirDroid | Your Android, on the Web.

Google 日曆 | Gmail|Google Maps

Evernote

Flipboard: Your News Magazine

Any.DO待办事项列表 | 任务列表

Dropbox

Nexus Media Importer

Pocket 

………

Linux下编译Python/C API问题

Linux下编译Python/C API问题

在Linux下编译python c api时遇到 类似下面的错误:

 undefined reference to `Py_Initialize

当然,如果你在windows平台下,使用IDE可能不会遇到这样问题。但是在linux,unix下呢,要自己动手写Makefile呢?
猜测这可能是缺少某些库,Google一下可以找到答案,这里文章会给出原因和解决方案,但是在多一下废话给刚刚接触python C API 的童鞋们,这不是所谓的技术文章,只是希望众多刚刚步入python大门遇到此类问题的一个参考。当然我也是菜鸟…

Linux下安装python,当前的发行版通常已经安装了python,但是可能版本等原因,如果需要安装,建议源码编译安装:

到这里下载所对应的版本:http://python.org/解压,cd到解压后的python(X.X.X).

# ./configure
#  make
#  make install

这样编译安装完成,在Terminal下敲python:

Python 2.7.3 (default, Jul  3 2012, 18:01:45) 
[GCC 4.7.0 20120507 (Red Hat 4.7.0-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

OK,现在来试试Python/C API.网上的例子很多,随便拿来一个最简单的,假设保存为main.c:

//This is A sample.
#include "Python.h"

int main()
{
        Py_Initialize();
        printf("This is a C-Python Program.\n");
        PyRun_SimpleString("print(\"Hello,Python\")");
        Py_Finalize();
        return 0;
}

 

写一个Makefile,因为python的安装目录都采取了默认:

ALL	= ./tc
CC	= gcc
RM	= rm
LIBS	=  -lpthread -lm -ldl -lutil 
INCL	= /usr/local/include/python2.7

OBJ	= main.o
all:$(ALL)

./tc : $(OBJ) 
	$(CC)  $(OBJ) -I$(INCL) -L$(LIBS) -L/usr/localb/ -lpython2.7 -o $@

clean:
	$(RM) $(OBJ) 
	$(RM) $(ALL)

好了,编译,运行:

This is a C-Python Program
Hello,Python

那么,文章开头提到的问题呢,没忘记呢。是因为在编译时忘记链接这些库:

-lpthread -lm -ldl -lutil
不要忘了,还有,注意Python.h的路径,P是大写!

 

 

Fedora配置telnet和ftp的Tips

Fedora配置telnet和ftp的Tips

如果你要从一台PC或者从虚拟机宿主上来管理你的Fedora那么Telnet和FTP服务是必不能少的…很遗憾,不像Ubuntu,Fedora甚至连telnet,ftp的客户端服务都不再默认安装了,可这未必是坏事,自己动手,丰衣足食……废话少来….

一切从简,直接通过yum来获取安装…….

安装和配置Telnet:

1. Telnet客户端/服务端下载安装:

# yum install telnet
# yum install telnet-server
2.接下来需要做简单的配置:
cd /etc/xinetd.d
# vi telnet
//修改disable=yes 为 disable= no
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable = no
}

3.禁用本地策略应用设置 ,这一步不做的话会遇到“权限拒绝”的错误提示

# vi /etc/sysconfig/selinux
  //修改SELINUX=disabled
  SELINUX=disabled
  SELINUXTYPE=targeted

4.至此配置完成,启动服务:

# /etc/rc.d/init.d/xinetd restart

5.开放端口

# iptables -I INPUT -p tcp --dport 23 -j ACCEPT

其实我倒建议直接关闭防火墙..这就省了。OK,telnet  localhost ,成功!

安装配置FTP客户端和服务

1.客户端/服务端下载安装

# yum install ftp
# yum install vsftpd

2.vsFTP配置大都一样,而且项目比较多,配置文件中有详细说明,不再赘述..
3.重启服务

# service vsftpd restart

————————————————————————————————————————————END
 

Ubuntu 11.10(12.04)/Ubuntu 13.10/14.04禁用客人会话(guest session)

Ubuntu 11.10(12.04)/Ubuntu 13.10/14.04禁用客人会话(guest session)

本文介绍的方法适用于ubuntu 11.10,12.04,Ubuntu13.10 请参看文章最后,请转载时注明出处https://www.gigiwangs.com;某些知名网站大段复制本文而不留出处BS之。

ubuntu 11.10有了客人会话模式,于是有人便有了这个问题:能不能像Windows那样可以禁用或启用来宾账户(Guest)登录呢?
在windows下是很简单,但是这个在ubuntu 11.10下该怎么办呢。看到中文论坛上的解决方法:

sudo apt-get remove gdm-guest-session

测试后并不奏效。其实以下为一种有效的解决方法:(英文很简单就不翻译)

if you wish to remove or disable the guest session from the login screen, open a shell terminal (use the Dash to search for “terminal”), then type sudo gedit /etc/lightdm/lightdm.conf. That command will open LightDM’s configuration file (after you authenticate) in Gedit, a text editor. By default, that file reads:

sudo gedit /etc/lightdm/lightdm.conf
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu

添加 allow-guest=false , 即如下内容:

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
allow-guest=false

保存退出,OK,收工!

转载请注明:https://www.gigiwangs.com/archives/564 谢谢!

For ubuntu 13.10,请按照以下方法操作:

sudo gedit /etc/lightdm/lightdm.conf.d/50-unity-greeter.conf 

在最后添加:

 allow-guest=false

Ubuntu14.04 和13.10 类似,只是文件位置有所改变,/usr/share/lightdm/lightdm.conf.d 的50-unity-greeter.conf 

同样添加:allow-guest=false