分类: 菜鸟Linux笔记

菜鸟学习LINUX笔记

  • linux 下查看机器是cpu是几核的

    几个cpu

     

    more /proc/cpuinfo |grep “physical id”|uniq|wc -l

     

    每个cpu是几核(假设cpu配置相同)

     

    more /proc/cpuinfo |grep “physical id”|grep “0”|wc -l

     

    cat /proc/cpuinfo | grep processor

     

    1. 查看物理CPU的个数

    #cat /proc/cpuinfo |grep “physical id”|sort |uniq|wc -l

     

    2. 查看逻辑CPU的个数

    #cat /proc/cpuinfo |grep “processor”|wc -l

     

    3. 查看CPU是几核

    #cat /proc/cpuinfo |grep “cores”|uniq

     

    4. 查看CPU的主频

    #cat /proc/cpuinfo |grep MHz|uniq

     

     

    # uname -a

    Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux

    (查看当前操作系统内核信息)

     

    # cat /etc/issue | grep Linux

    Red Hat Enterprise Linux AS release 4 (Nahant Update 5)

    (查看当前操作系统发行版信息)

     

    # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

    8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz

    (看到有8个逻辑CPU, 也知道了CPU型号)

     

    # cat /proc/cpuinfo | grep physical | uniq -c

    4 physical id : 0

    4 physical id : 1

    (说明实际上是两颗4核的CPU)

     

    # getconf LONG_BIT

    32

    (说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)

     

    # cat /proc/cpuinfo | grep flags | grep ‘ lm ‘ | wc -l

    8

    (结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)

     

     

    如何获得CPU的详细信息:

    linux命令:cat /proc/cpuinfo

    用命令判断几个物理CPU,几个核等:

    逻辑CPU个数:

    # cat /proc/cpuinfo | grep “processor” | wc -l

    物理CPU个数:

    # cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l

    每个物理CPU中Core的个数:

    # cat /proc/cpuinfo | grep “cpu cores” | wc -l

    是否为超线程?

    如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。

    每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:

    # cat /proc/cpuinfo | grep “siblings”

  • mysql查看表结构命令

    mysql查看表结构命令,如下:

     

    desc 表名;

    show columns from 表名;

    describe 表名;

    show create table 表名;

     

    use information_schema

    select * from columns where table_name=’表名’;

     

    顺便记下:

    show databases;

    use 数据库名;

    show tables;

     

     

     

    原有一unique索引AK_PAS_Name(PAC_Name)在表tb_webparamcounter中,

    执行以下sql修改索引

    alter table tb_webparamcounter drop index AK_PAS_Name;

    alter table tb_webparamcounter add UNIQUE AK_PAS_Name(PC_ID,PAC_Name);

     

    若发现索引的逻辑不对,还需要再加一个字段进去,执行

    alter table tb_webparamcounter drop index AK_PAS_Name;

    alter table tb_webparamcounter add UNIQUE AK_PAS_Name(PC_ID,PAC_Name,PAC_Value);

    注意:这时的PC_ID,PAC_Name,PAC_Value三个字段不是FOREIGN KEY

    否则必需先drop FOREIGN KEY,再重做上一步才行

     

    顺便提下oracle

    select * from v$database;

    select * from all_users;

    select * from user_tables;

     

  • Apache的prefork模式和worker模式

    prefork模式

    这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。

     

    这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。

     

    worker模式

    此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。

     

    控制这个MPM的最重要的指令是,控制每个子进程允许建立的线程数的ThreadsPerChild指令,和控制允许建立的总线程数的MaxClients指令。

     

    prefork和worker模式的切换

    1.将当前的prefork模式启动文件改名

    mv httpd httpd.prefork

    2.将worker模式的启动文件改名

    mv httpd.worker httpd

    3.修改Apache配置文件

    vi /usr/local/apache2/conf/extra/httpd-mpm.conf

    找到里边的如下一段,可适当修改负载等参数:

    <IfModule mpm_worker_module>

    StartServers 2

    MaxClients 150

    MinSpareThreads 25

    MaxSpareThreads 75

    ThreadsPerChild 25

    MaxRequestsPerChild 0

    </IfModule>

    4.重新启动服务

    /usr/local/apache2/bin/apachectl restart

    即可换成worker方式启动apache2

     

    处于稳定性和安全性考虑,不建议更换apache2的运行方式,使用系统默认prefork即可。另外很多php模块不能工作在worker模式下,例如redhat linux自带的php也不能支持线程安全。所以最好不要切换工作模式。

     

    prefork和worker模式的比较

    prefork模式使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。

     

    worker模式使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起”死掉”.由于线程共享内存空间,所以一个程序在运行时必须被系统识别为”每个线程都是安全的”。

     

    总的来说,prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。

     

    prefork模式配置详解

    <IfModule mpm_prefork_module>

    ServerLimit 256

    StartServers 5

    MinSpareServers 5

    MaxSpareServers 10

    MaxClients 256

    MaxRequestsPerChild 0

    </IfModule>

    ServerLimit

    默认的MaxClient最大是256个线程,如果想设置更大的值,就的加上ServerLimit这个参数。20000是ServerLimit这个参数的最大值。如果需要更大,则必须编译apache,此前都是不需要重新编译Apache。

    生效前提:必须放在其他指令的前面

     

    StartServers

    指定服务器启动时建立的子进程数量,prefork默认为5。

     

    MinSpareServers

    指定空闲子进程的最小数量,默认为5。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。此参数不要设的太大。

     

    MaxSpareServers

    设置空闲子进程的最大数量,默认为10。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。此参数不要设的太大。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成”MinSpareServers+1″。

     

    MaxClients

    限定同一时间客户端最大接入请求的数量(单个进程并发线程数),默认为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,队列中的请求将得到服务。要增大这个值,你必须同时增大ServerLimit。

     

    MaxRequestsPerChild

    每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为”0″,子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:

    1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。

    2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

     

    worker模式配置详解

    <IfModule mpm_worker_module>

    StartServers 2

    MaxClients 150

    MinSpareThreads 25

    MaxSpareThreads 75

    ThreadsPerChild 25

    MaxRequestsPerChild 0

    </IfModule>

     

    StartServers

    服务器启动时建立的子进程数,默认值是”3″。

     

    MaxClients

    允许同时伺服的最大接入请求数量(最大线程数量)。任何超过MaxClients限制的请求都将进入等候队列。默认值是”400″,16(ServerLimit)乘以25(ThreadsPerChild)的结果。因此要增加MaxClients的时候,你必须同时增加ServerLimit的值。

     

    MinSpareThreads

    最小空闲线程数,默认值是”75″。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。

     

    MaxSpareThreads

    设置最大空闲线程数。默认值是”250″。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正你设置的值:worker要求其大于等于MinSpareThreads加上ThreadsPerChild的和。

     

    ThreadsPerChild

    每个子进程建立的常驻的执行线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。

     

    MaxRequestsPerChild

    设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为”0″,子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:

    1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。

    2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

    注意对于KeepAlive链接,只有第一个请求会被计数。事实上,它改变了每个子进程限制最大链接数量的行为。

  • Android出现“Read-only file system”解决办法

    操作设备文件系统上的文件结果遇到”… Read-only file system”。

     

    解决办法:

    1. 最简单的,adb remount

    2. 不行的话,adb shell su之后将文件系统remount为读写权限: mount -o remount rw /system。出于安全考虑,记得完事后remount回只读: mount -o ro,remount /system

    3. 和方法2类似,mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system

  • android手机铃声存放路径

    /system/media/audio/ringtones 来电铃声

    /system/media/audio/notifications 短信通知铃声

    /system/media/audio/alarms 闹钟铃声

  • 禁止显示或发送Apache版本号(设置ServerTokens)

    默认地,服务器HTTP响应头会包含apache和php版本号。像下面的,这是有危害的,因为这会让黑客通过知道详细的版本号而发起已知该版本的漏洞攻击。

    1.Server: Apache/2.2.17 (Unix) PHP/5.3.5

    为了阻止这个,需要在httpd.conf设置ServerTokens为Prod,这会在响应头中显示“Server:Apache”而不包含任何的版本信息。

    1.# vi httpd.conf

    2.ServerTokens Prod

    下面是ServerTokens的一些可能的赋值:

    ServerTokens Prod 显示“Server: Apache”

    ServerTokens Major 显示 “Server: Apache/2″

    ServerTokens Minor 显示“Server: Apache/2.2″

    ServerTokens Min 显示“Server: Apache/2.2.17″

    ServerTokens OS 显示 “Server: Apache/2.2.17 (Unix)”

    ServerTokens Full 显示 “Server: Apache/2.2.17 (Unix) PHP/5.3.5″ (如果你这指定任何的值,这个是默认的返回信息)

  • WGet使用指南

    wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.

     

    所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。

     

    wget可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,wget遵循Robot Exclusion标准(/robots.txt). wget可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。

     

    wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完 毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

     

    wget的常见用法

    wget的使用格式

     

    Usage: wget [OPTION]… [URL]…

    用wget做站点镜像:

    wget -r -p -np -k http://dsec.pku.edu.cn/~usr_name/

    # 或者

    wget -m http://www.tldp.org/LDP/abs/html/

    在不稳定的网络上下载一个部分下载的文件,以及在空闲时段下载

    wget -t 0 -w 31 -c http://dsec.pku.edu.cn/BBC.avi -o down.log &

    # 或者从filelist读入要下载的文件列表

    wget -t 0 -w 31 -c -B ftp://dsec.pku.edu.cn/linuxsoft -i filelist.txt -o down.log &

    上面的代码还可以用来在网络比较空闲的时段进行下载。我的用法是:在mozilla中将不方便当时下载的URL链接拷贝到内存中然后粘贴到文件filelist.txt中,在晚上要出去系统前执行上面代码的第二条。

     

    使用代理下载

    wget -Y on -p -k https://sourceforge.net/projects/wvware/

    代理可以在环境变量或wgetrc文件中设定

     

    # 在环境变量中设定代理

    export PROXY=http://211.90.168.94:8080/

    # 在~/.wgetrc中设定代理

    http_proxy = http://proxy.yoyodyne.com:18023/

    ftp_proxy = http://proxy.yoyodyne.com:18023/

    wget各种选项分类列表

    启动

    -V, –version 显示wget的版本后退出

    -h, –help 打印语法帮助

    -b, –background 启动后转入后台执行

    -e, –execute=COMMAND 执行`.wgetrc’格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc

    记录和输入文件

    -o, –output-file=FILE 把记录写到FILE文件中

    -a, –append-output=FILE 把记录追加到FILE文件中

    -d, –debug 打印调试输出

    -q, –quiet 安静模式(没有输出)

    -v, –verbose 冗长模式(这是缺省设置)

    -nv, –non-verbose 关掉冗长模式,但不是安静模式

    -i, –input-file=FILE 下载在FILE文件中出现的URLs

    -F, –force-html 把输入文件当作HTML格式文件对待

    -B, –base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀

    –sslcertfile=FILE 可选客户端证书

    –sslcertkey=KEYFILE 可选客户端证书的KEYFILE

    –egd-file=FILE 指定EGD socket的文件名

    下载

    –bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)

    -t, –tries=NUMBER 设定最大尝试链接次数(0 表示无限制).

    -O –output-document=FILE 把文档写到FILE文件中

    -nc, –no-clobber 不要覆盖存在的文件或使用.#前缀

    -c, –continue 接着下载没下载完的文件

    –progress=TYPE 设定进程条标记

    -N, –timestamping 不要重新下载文件除非比本地文件新

    -S, –server-response 打印服务器的回应

    –spider 不下载任何东西

    -T, –timeout=SECONDS 设定响应超时的秒数

    -w, –wait=SECONDS 两次尝试之间间隔SECONDS秒

    –waitretry=SECONDS 在重新链接之间等待1…SECONDS秒

    –random-wait 在下载之间等待0…2*WAIT秒

    -Y, –proxy=on/off 打开或关闭代理

    -Q, –quota=NUMBER 设置下载的容量限制

    –limit-rate=RATE 限定下载输率

    目录

    -nd –no-directories 不创建目录

    -x, –force-directories 强制创建目录

    -nH, –no-host-directories 不创建主机目录

    -P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…

    –cut-dirs=NUMBER 忽略 NUMBER层远程目录

    HTTP 选项

    –http-user=USER 设定HTTP用户名为 USER.

    –http-passwd=PASS 设定http密码为 PASS.

    -C, –cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许).

    -E, –html-extension 将所有text/html文档以.html扩展名保存

    –ignore-length 忽略 `Content-Length’头域

    –header=STRING 在headers中插入字符串 STRING

    –proxy-user=USER 设定代理的用户名为 USER

    –proxy-passwd=PASS 设定代理的密码为 PASS

    –referer=URL 在HTTP请求中包含 `Referer: URL’头

    -s, –save-headers 保存HTTP头到文件

    -U, –user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION.

    –no-http-keep-alive 关闭 HTTP活动链接 (永远链接).

    –cookies=off 不使用 cookies.

    –load-cookies=FILE 在开始会话前从文件 FILE中加载cookie

    –save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中

    FTP 选项

    -nr, –dont-remove-listing 不移走 `.listing’文件

    -g, –glob=on/off 打开或关闭文件名的 globbing机制

    –passive-ftp 使用被动传输模式 (缺省值).

    –active-ftp 使用主动传输模式

    –retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

    递归下载

    -r, –recursive 递归下载--慎用!

    -l, –level=NUMBER 最大递归深度 (inf 或 0 代表无穷).

    –delete-after 在现在完毕后局部删除文件

    -k, –convert-links 转换非相对链接为相对链接

    -K, –backup-converted 在转换文件X之前,将之备份为 X.orig

    -m, –mirror 等价于 -r -N -l inf -nr.

    -p, –page-requisites 下载显示HTML文件的所有图片

    递归下载中的包含和不包含(accept/reject)

    -A, –accept=LIST 分号分隔的被接受扩展名的列表

    -R, –reject=LIST 分号分隔的不被接受的扩展名的列表

    -D, –domains=LIST 分号分隔的被接受域的列表

    –exclude-domains=LIST 分号分隔的不被接受的域的列表

    –follow-ftp 跟踪HTML文档中的FTP链接

    –follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表

    -G, –ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表

    -H, –span-hosts 当递归时转到外部主机

    -L, –relative 仅仅跟踪相对链接

    -I, –include-directories=LIST 允许目录的列表

    -X, –exclude-directories=LIST 不被包含目录的列表

    -np, –no-parent 不要追溯到父目录

  • Linux定时执行任务命令概述:at和crontab

    在Linux下要定时执行任务,可以有两种方法实现:at命令和crontab。如果我们只是想要让特定任务运行一次,则可以使用at监控程序;如果是无人作业的情况,那么可以使用cron服务。

     

    AD:

     

    本文介绍在Linux下的两种定时执行任务的方法:at命令,以及crontab服务。

     

    (1)at命令

     

    假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了。

     

    设置at命令很简单,指示定运行的时间,那么就会在哪个时候运行。at类似打印 进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。at now + time命令可以在指示任务。

     

    假设处理一个大型数据库,要在别人不用系统时去处理数据,比如凌晨3点10分。那么我们就应该先建立/home/kyle/do_job脚本管理数据库,计划处理/home/kyle/do_job文件中的结果。正常方式是这样启动下列命令:

     

    # at 2:05 tomorrow

    at>/home/kyle/do_job

    at> Ctrl+D

    AT Time中的时间表示方法

     

    ———————————————————————–

    时 间 例子 说明

    ———————————————————————–

    Minuteat now + 5 minutes任务在5分钟后运行

    Hour at now + 1 hour 任务在1小时后运行

    Days at now + 3 days 任务在3天后运行

    Weeks at now + 2 weeks 任务在两周后运行

    Fixed at midnight 任务在午夜运行

    Fixed at 10:30pm任务在晚上10点30分

    注意:一定要检查一下atq的服务是否启 动,有些操作系统未必是默认启动的,linux默认为不启动,而ubuntu默认为启动的。检查是否启动,用service atd检查语法,用service atd status检查atd的状态,用service atd start启动atd服务。

     

    查看at执行的具体内容:一般位于/var/spool/at目录下面, 用vi打开,在最后一部分就是你的执行程序

     

    (2)crontab

     

    cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

     

    /sbin/service crond start//启动服务

    /sbin/service crond stop //关闭服务

    /sbin/service crond restart //重启服务

    /sbin/service crond reload//重新载入配置

    /sbin/service crond status//查看服务状态

    你也可以将这个服务在系统启 动的时候自动启动:

     

    在/etc/rc.d/rc.local这个脚本的末尾加上:

     

    /sbin/service crond start

    现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:

     

    1、直接用crontab命令编辑

     

    cron服务提供 crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

     

    crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

    crontab -l //列出某个用户cron服务的详细内容

    crontab -r //删除某个用户的cron服务

    crontab -e //编辑某个用户的cron服务

    比如说root查看自己的cron设置:crontab -u root -l

     

    再例如,root想删除fred的cron设置:crontab -u fred -r

     

    基本格式 :

     

    *****command

    分  时  日  月  周  命令

    第1列表示分钟1~59 每分钟用*或者 */1表示

    第2列表示小时1~23(0表示0点)

    第3列表示日期1~31

    第4列表示月份1~12

    第5列标识号星期0~6(0表示星期天)

    第6列要运行的命令

    crontab文件的一些例子:

     

    #每晚的21:30重启apache。

    30 21 * * * /usr/local/etc/rc.d/lighttpd restart

     

    #每月1、10、22日

    45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

     

    #每天早上6点10分

    10 6 * * * date

     

    #每两个小时

    0 */2 * * * date

     

    #晚上11点到早上8点之间每两个小时,早上8点

    0 23-7/2,8 * * * date

     

    #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

    0 11 4 * mon-wed date

     

    #1月份日早上4点

    0 4 1 jan * date

  • /bin/false and /usr/sbin/nologin

    要拒绝系统用户登录,可以将其shell设置为/usr/sbin/nologin或者/bin/false

     

    # usermod -s | –shell /usr/sbin/nologin username

    或者

     

    # usermod -s | -shell /bin/false username

    /bin/false

     

    /bin/false什么也不做只是返回一个错误状态,然后立即退出。将用户的shell设置为/bin/false,用户会无法登录,并且不会有任何提示。

     

    /usr/sbin/nologin

     

    nologin会礼貌的向用户显示一条信息,并拒绝用户登录:

     

    This account is currently not available.

     

    有一些软件,比如一些ftp服务器软件,对于本地非虚拟账户,只有用户有有效的shell才能使用ftp服务。这时候就可以使用nologin使用户即不能登录系统,还能使用一些系统服务,比如ftp服务。/bin/false则不行,这是二者的重要区别之一。

     

    /etc/nologin

     

    如果存在/etc/nologin文件,则系统只允许root用户登录,其他用户全部被拒绝登录,并向他们显示/etc/nologin文件的内容。

     

    锁定用户账户

     

    # passwd -l | –lock username

    #解锁用户账户

     

    # passwd -u | –unlock username

    删除用户密码

     

    # passwd -d | –delete username

    ===

  • putty中文乱码问题解决

    ###putty中文乱码问题解决

     

    用putty从windows xp连接ubuntu server或者FreeBSD系统,其中中文部分乱码,经常遇到这个问题的时候,会觉得很郁闷。现共享一些解决这个问题的方法。

     

     

    ###方法一:

    打开putty主程序,选择window-〉Appearance-〉Font settings-〉Change Settings,选择Fixedsys字体,字符集选择CHINESE_GB2312。

    在window-〉Appearance-〉 Translation中,Received data assumed to be in which character set 中,把Use font encoding改为UTF-8

    如果经常使用,把这些设置保存在session里面.

    保存方法:再做完以上操作的同时选中以下两项:

    在window-〉Appearance-〉 Translation中,选中:TReat CJK ambiguous characters as wide和Caps Lock acts as Cyrillic switch即可。

     

    ###方法二:

    编辑/etc/sysconfig/i18n

     

    把第1句“LANG=”zh_CN.UTF-8″”改为“LANG=”zh_CN.GB18030″”,完成后保存重新登录即可。

     

    ##方法三:

    打开putty,登录成功后,在shell中输入

    # export LC_ALL= ‘zh_CN.utf8′

     

    # vi ~/.bash_profile

     

    LANG=zh_CN.GB18030

     

    LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN

     

    export LANG LANGUAGE