lsof命令详解

in 服务器类

卸载移动存储时经常提示device busy,也可能误删了一个正在打开的文件。。。。
这时候可以试试lsof

lsof简介 

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

lsof使用 

lsof输出信息含义
在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。

COMMAND    PID      USER   FD      TYPE     DEVICE     SIZE       NODE      NAME
init       1         root  cwd      DIR       3,3       1024       2         /
init       1         root  rtd      DIR       3,3       1024       2         /
init       1         root  txt      REG       3,3       38432      1763452  /sbin/init
init       1         root  mem      REG       3,3       106114     1091620  /lib/libdl-2.6.so
init       1         root  mem      REG       3,3       7560696    1091614  /lib/libc-2.6.so
init       1         root  mem      REG       3,3       79460      1091669  /lib/libselinux.so.1
init       1         root  mem      REG       3,3       223280     1091668  /lib/libsepol.so.1
init       1         root  mem      REG       3,3       564136     1091607  /lib/ld-2.6.so
init       1         root  10u      FIFO      0,15                  1309     /dev/initctl

每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。

Continue Reading »

0 Comments

在FreeBSD系统中用pkill命令踢出SSH在线登录用户

in 服务器类

FreeBSD是一个多用户多任务的操作系统,用户可以在不同地方通过ssh连上FreeBSD服务器,在系统中我们可以使用w命令来查看当前在线登录用户。

[root@host01 ~]# w

03:05:23 up 19 min, 3 users, load average: 0.00, 0.03, 0.05
USER TTY FROM   LOGIN@ IDLE WHAT
root p0 192.168.0.2 01:39 6:52 /usr/bin/perl
root p1 192.168.0.31 01:45 0.00s w
root p2 192.168.0.23 01:52 2.00s -bash

看到了吧,已经有3个用户登录到服务器了。接下来使用who am i 看那个是自己的登录终端,下面自己是pts/1

[root@host01 ~]# who am i
root p1 2009-08-02 03:06 (192.168.0.31)

接下来使用pkill命令将要其它的用户踢出,这里为p0和p2。

Continue Reading »

0 Comments

VSFTP中"Fixing 500 OOPS: vsftpd: refusing to run with writable root inside chroot ()"的解决办法!

in 服务器类

今天在参考以前写的在FreeBSD下配置vsftpd教程http://blog.haohtml.com/archives/7213的时候.发现以下错误:

After upgrading vsftpd to 2.3.5 you may be getting the following message when trying to log in.

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

This is due to the following update:

- Add stronger checks for the configuration error of running with a writeable
root directory inside a chroot(). This may bite people who carelessly turned
on chroot_local_user but such is life.

The problem is that your users root directory is writable(用户根目录可写), which isn’t allowed when using chroot restrictions in the new update. The following command will fix this problem, replace the directory with your users root:

chmod a-w /home/user

好吧,我们如果启用chroot,必须保证ftp根目录不可写,这样对于ftp根直接为网站根目录的用户不方便,所以建议假如ftp根目录是/home/user,那么网站结构可以这样分,/home/user/log为日志目录,/home/user/web为网站根目录,这样我们就可以去掉/home/user目录的写入权限而不影响网站的正常运行

1 Comment

FreeBSD中重新分区提示"ERROR: Unable to write data to disk ad0! To edit the lables on a running system set sysctl kern.geom.debugflags=16 and try again."的解决办法

in js框架

今天将FreeBSD系统重新安装系统的时候.将原来的分区全部删除.进行重新分区,而按下W进行分区保存的时候.提示以下错误:

ERROR: Unable to write data to disk ad0! To edit the lables on a running system set sysctl kern.geom.debugflags=16 and try again.

解决办法如下:

用root权限运行以下任何一条命令:
#sysctl -w kern.geom.debugflags=16
或者
#sysctl  kern.geom.debugflags=16

你可以用sysctl -a查询你系统的所有内核子系统的配置参数,在具备权限的情况下,你可以修改配置变量,其中有一些只读的属性无法修改,有一些属性只能在开机时设定而不是运行时动态修改的也不能改(这些参数/属性在/boot/loader.conf中调整和修改)

1 Comment

FreeBSD启动出现"My unqualified host name unkown...Sleeping for retry"的解决办法

in 服务器类

最简单的方法是把/etc/rc.conf里的hostname改成"localhost"。即

hostname="localhost"

 

0 Comments

二维数组和指针(C语言)

in 程序开发

int *p,a[5],b[3][4];

指针变量给一维数组赋值,可以写成p=a;或则p=&a[0];

二维数组需要写成 p=b[0];
以下为指针与二维数组实例:

#include  <stdio.h>
main() {
        int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
        int (*p)[4]=a;

        printf("%d\n",*(*(p+2) + 3));
}

输出结果为:

23

===========================

应该注意指针数组和二维数组指针变量的区别。这两者虽然都可用来表示二维数组,但是其表示方法和意义是不同的。
二维数组指针变量是单个的变量,其一般形式中"(*指针变量名)"两边的括号不可少。

Continue Reading »

0 Comments

如何安装nginx的第三方模块

in 服务器类

明天晚上一口气将agentzh写的"Nginx变量漫谈1-8"看完了.于是手动测试一下这些第三方模块.

这里以HttpEchoModule模块为例.

由于以前安装过nginx,所以这里重新configure一下.并且指定新添加的模块路径.使用--add-module=/path/to/module_name指令.可以参考:http://wiki.nginx.org/HttpEchoModule#Installation

这里只指定了一个HttpEchoModule这个模块.模块下载地址见:https://github.com/agentzh/echo-nginx-module/tags,如果有多个模块的话,只需要多次使用-add-module指令即可.

先下载HttpEchoModule模块

cd /usr/src/soft/nginx-1.1.1/
mkdir module
cd module
wget "https://github.com/agentzh/echo-nginx-module/tarball/v0.37rc7"
tar zxvf v0.37rc7

Continue Reading »

1 Comment

一个小公司老板的日常管理总结 希望能让创业的朋友学到东西

in 收藏文章

1. 小公司如何留住骨干
这些年物价上涨,费用上涨,公司利润却未涨多少。每个员工都希望工资大幅增加,但估计90%以上小公司无法做到这点。有时我这当老板的恨不得将公司门一关,自己拿着资金炒股或炒房,图个清净。虽说近几年由于给每个员工上5险1金,人均费用每月增加几百元,但员工并不领情,员工只算每月到手多少钱,至于公司的支出与己无关。
既然无法让所有人都满意,我就只满足公司20%的骨干。
首先发展骨干员工入股:我将公司股份买一送一,半价销售给骨干员工,五年内退股只退还本金,五年以上退股我三倍赎回。每年拿出利润的60%分红。反正有钱大家赚,但股东一旦做了对不起公司的事,加倍惩罚,由股金中扣除。这招还真好使,在近5年里没有一个股东离职,而且公司重点岗位都有股东,省了我不少精力。

Continue Reading »

0 Comments

Lua中非全局函数的写法

in 程序开发

这里共有三种写法,这里基本上是将函数和表组合的写法.

1.表和函数放在一起

Lib = {}
Lib.foo = function (x, y) return x + y end
Lib.goo = function (x, y) return x -y end

2.使用且构造函数

Lib = {
    foo = function (x, y) return x + y end,
    goo = function (x, y) return x - y end
}

注意第一个函数后面有一个逗号","

Continue Reading »

0 Comments

详解如何让EditPlus支持LUA教程

in 程序开发

如何让EditPlus支持LUA教程是本文要介绍的内容,这次主要介绍一下学习Lua之前的准备工作。关于在EditPlus中实现lua的安装,具体内容来看本文详解。

(1) 下载Lua安装包,最新版本是lua-5.1.3. 它的体积很小,只有210K,http://luaforge.net/frs/?group_id=377

这是WINDOWS版本. 附带了编辑器,连环境变量都一次搞定了。

(2)安装lua

(3)安装EditPlus编辑器:

(4)让EditPlus支持lua高亮

下拉菜单"工具" -- "首选项" ,选择"语法". 点击"添加"按钮增加一个文件类型,在下面的"描述"和"扩展名"栏里都填写lua。

Continue Reading »

1 Comment