linux

13年前
时记录的一些比较常用且重要的linux命令,特贡献给大家共享。
转载请注明出处:http://hi.baidu.com/luxiaoyi/creat/blog/
1 : service vsftpd start
2 : ps -ax
3 : ps -Af|grep java
4 : ftp 10.61.0.157 -> entering passive mode
    ftp> ls -> no route to host
    deal with this case : under 'ftp>' marks, you put 'passive' , then it will
    display like this : Passive mode off.
    then input 'ls', that's ok!
5 : how to copy files from remote sites?
    resolvent : scp vs@10.61.0.217:/opt/HPCG-1107/GOSRTestlib/conf/* ./conf/
        and scp ./conf/ vs@10.61.0.217:/opt/HPCG-1107/GOSRTestlib/conf/*
6 : how to caculate total files num under a dir or total dirs ?
    resolvent :
    file:
    find /path -type f|wc -l
    dir:
    find /path -type d|wc -l
    or there is a good method to count. find -maxdepth 1|wc -l
    '-maxdepth 1' indicates find current dir.
    'wc -l' indicates count lines.
7 : how to add a new user into linux?
    ************Create new user*************************
    adduser penghan
    #Changing password for user penghan
    passwd penghan
   
    New password: //input password
    Retype new password: //input again
    # Updated successfully //Over
8 : what is mount?
    将 /dev/hda1 挂在 /mnt 之下。
    #mount /dev/hda1 /mnt
    将 /dev/hda1 用唯读模式挂在 /mnt 之下。
    #mount -o ro /dev/hda1 /mnt
    将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光     碟ISO 档在不烧录成光碟的情况下检视其内容。
    #mount -o loop /tmp/image.iso /mnt/cdrom
    相关命令umount
9 : how to mount your windows filesystem into linux?
    把Win下的硬盘分区Mount进Linux去就行了(如果你的分区格式是Fat32,则)
    C盘 #mkdir /mnt/c
         #mount -t vfat /dev/hda1 /mnt/c
    D盘 #mkdir /mnt/d
        #mount -t vfat /dev/hda4 /mnt/d
    E盘 #mkdir /mnt/e
        #mount -t vfat /dev/hda5 /mnt/e
    if your hard disk's file system is ntfs format, you must install another module, but it's also only support read only mode.
10 : when you tar file success in one computer, but failed in another one, and you are sure they are the same file. In this case, it may be the disk free space is not enough. So you can input 'df -h' command to check it.
11 : chmod ugo+w xxx --to add write priviledge for user,group and owner
    or chmod ugo+x xxx --to add execute priviledge for the three roles.
12 : when you write a file in windows, you must run 'dos2unix xxx' to modify some differences when you take it to linux system. For example, the difference of 'enter'.
13 : In redhat enterprise4, its mysql server service is called 'mysqld', so you must input 'service mysqld start', then the mysql service is start.
14 : If you want to change a file's owner and group, you can input like this 'chown vs.ftp xxx' xxx: filename vs: owner name ftp : group name
15 : 要修改所有用户的PATH值,您可以以root身份编辑/etc/profile文件,修改其中包含“PATH=”的一行。只有在用户重新注册后,PATH的新值才会生效。如果只是要修改某一个用户的PATH值,就应该编辑该用户主目录中的.bash-profile文件。
16 : export LANG=en_US : this command can modify your computer's language.
17 : if you want to check a dir' size , you can put 'du -h' to check this.
18 : date -s "2007-12-8"
19 : mysql 查看当前系统参数变量 show variables like 'character\_set\_%'; In linux system, you can modify mysql conf by modifying /etc/my.cnf.
20 : sometimes, your system has installed a software already, but you want to make your installation valid, you can do like this: export PATH='your software's path':$PATH .
    REMEMBER : your software's bin path must be at the head of PATH.
21 : diff xxxfile xxxfile :this command can find differences between two files.
22 : NAT——网络地址转换,是通过将专用网络地址(如企业内部网Intranet)转换为公用地址(如互联网Internet),从而对外隐藏了内部管理的 IP 地址。这样,通过在内部使用非注册的 IP 地址,并将它们转换为一小部分外部注册的 IP 地址,从而减少了IP 地址注册的费用以及节省了目前越来越缺乏的地址空间(即IPV4)。同时,这也隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
23 : 列出几个关掉Linux防火墙的方法(when i install gos, i found that if my iptables is on, my computer can't connect with other machinces.)
    service iptables stop
    service iptables start
    redhat-config-securitylevel
    永久关闭防火墙
    service iptables sto
    chkconfig iptables off
24 : As to every user in linux, if you want to modify your enviroment always when your system is on, you can implement this by this way :
    $ cd ~ (go to home dir)
    $vi .bashrc
    at the end of bashrc file, you can add export everything you like.
    for example: export LANG=en_US or you can export PATH=...:$PATH
25 : top : this command is similar to taskmanager.
26 : alias : this command is used to see which commands in your computer has other alias. e.g vi maybe is vim.
27 : find ${dir} -name make.inc :this command can find {dir}'s all make.inc files recursivly. you can take param like -maxdepth 1 to limit recursivly.
    e.g find . -maxdepth 1 -name find | wc -l   : it will output 1.
    this command is similar with grep command.
   
    eg: find . -name *.log
   
    grep find -f * (the first 'find' is the string you want to find. -f is to indicate which file you want to search.)
28 : 在Linux下查看内存我们一般用命令: free 也可以用top
    如何看额定值(RHEL4.0):
    #cat /proc/meminfo
29 : nohup 这个命令很重要 当你在控制台上运行一个程序时,你可能希望关机,但是程序接着在服务器上运行,那么这个时候就应该用
“nohup yourcommand” 来运行你的程序,这样的话就算你关闭了控制台程序也还在跑。
30 : screen : this command is very important. please see an article in my blog, the url is http://hi.baidu.com/luxiaoyi/blog/item/a58d9645ee216e25cffca3b2.html
31 : 用.o编译.so简单方法: gcc -o abc.so -shared a.o b.o c.o
    详细介绍 :
    $gcc -c hello.c -o hello.o
    1.连接成静态库
    连接成静态库使用ar命令,其实ar是archive的意思
    $ar cqs libhello.a hello.o
    2.连接成动态库
    生成动态库用gcc来完成,由于可能存在多个版本,因此通常指定版本号:
    $gcc -shared -Wl,-soname,libhello.so.1 -o libhello.so.1.0 hello.o
    另外再建立两个符号连接:
    $ln -s libhello.so.1.0 libhello.so.1
    $ln -s libhello.so.1 libhello.so
    这样一个libhello的动态连接库就生成了。最重要的是传gcc -shared 参数使其生成是动态库而不是普通执行程序.
    -Wl 表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上,每一个库都有一个soname,当连接器发现它正在查找的程序库中有这样一个名称,连接器便会将soname嵌入连结中的二进制文件内,而不是它正在运行的实际文件名,在程序执行期间,程序会查找拥有soname名字的文件,而不是库的文件名,换句话说,soname是库的区分标志。
    这样做的目的主要是允许系统中多个版本的库文件共存,习惯上在命名库文件的时候通常与soname相同
    libxxxx.so.major.minor
    其中,xxxx是库的名字,major是主版本号,minor 是次版本号
    JNI在linux下编译so文件:
    ------------------------------
    GCC 编译命令
    ------------------------------
    gcc   -fPIC -shared JniTest.c -o libJniTest.so -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.06/include -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.06/include/linux
    说明:-fPIC -shared 生成动态链接文件;-I目录指向java的目录,不然会找不到jni.h.
   
    一个新问题:在vc里面,jni自动生成的头文件中的方法JNIEXPORT void JNICALL Java_testdll_testSo_outOfArray(JNIEnv *, jclass)不需要把参数具体写上变量,
    但是在linux中,需要写上具体的变量JNIEXPORT void JNICALL Java_testdll_testSo_outOfArray(JNIEnv * jEnv, jclass jClass) 例如这里的jEnv和jClass。
    还有一个新问题:在linux下动态链接库一定要取名叫lib+你在win下的dll的名字,比如win下叫testso.dll,那么在linux下一定要
    叫libtestso.so 你的代码里面还是写System.loadlibrary("testso");
32 : vi /etc/services 可以配置所有的服务和端口。
     netstat -nap|grep 8000 察看所有活动的端口 用root身份就可以看见是哪个进程占了你要的端口,然后kill掉他就可以了。
33 : 如何使ssh登陆别的站点不用输入密码?
    首先,例如我想用本地的lxy账户登陆远程节点A的lxy1账户,那么首先进入本地/home/lxy目录,在这个目录下有一个隐藏目录.ssh,进入这个目录,利用ssh-keygen命令来生成本用户的公私钥对,可以利用-t参数来指定生成方法:一般用rsa方法。此时,会要求你输入key的密码,直接回车就可以。如果你输的话,就一定要输入4位以上的密码,而且,以后你用ssh的时候就要输入这个密码。所以,建议不输入。
    然后会在.ssh目录下生成两个文件,例如id_rsa和id_rsa.pub,利用vi拷贝id_rsa.pub中的内容到远程节点A的lxy1账户目录下的.ssh目录里面的authorized_keys文件里。这样,以后你在本地以lxy用户身份利用ssh命令用节点A的lxy1账号登陆A节点,就不用再输入密码了。而且,执行:ssh lxy1@A ls 就能直接返回远程节点A的/home/lxy1/目录结构,不用输入密码。
34 : cat /proc/cpuinfo 可以查看cpu信息
35 : /etc/sysconfig/network-scripts/ifcfg-eth0 可以修改ip等网络信息。
36 : /sbin/service xxx restart == /etc/init.d/xxx restart   
 
名称 : crontab
使用权限 : 所有使用者
使用方式 :
    crontab  filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
说明 :
    crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
参数 :
    -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
    -r : 删除目前的时程表
    -l : 列出目前的时程表

  f1 f2 f3 f4 f5 program
    其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。
    当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
    当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
    当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
    当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推
    使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
     可以是 1-30/5 表示:第1-30分钟,每5分钟执行一次
 
 

查看端口服务程序:
nmap -sT -O xxx.xxx.xxx.xxx