Linux 系统相关知识记录

==========================Linux 系统相关=========================
问题:找不到动态链接库
办法:配置动态链接地址
export LD_LIBRARY_PATH=/home/drteam/wangjie/TestTmp/libdvbpsi-1.3.0/tmp/lib
export LD_LIBRARY_PATH=/home/drteam/wangjie/TestTmp/libdvbpsi-1.3.0/tmp/lib

问题  :securityCRT下的delete和home键需要设置,否则无效
解决办法:session option->emulation->mapped key,下面有两个复选框,需要勾下面两个

 

问题:Linux下的一个命令,有输出但是不能重定向  > log.txt
办法:输出信息是通过stderr输出的,因此需要将标准错误输出重定向到标准输出
netctrl -h > a.log 2>&1

$$挂载nfs
mount -t nfs -o nolock 192.168.2.242:/home_mount/drteam/wangjie/ /mnt/hi

   
$$ 执行没有权限Permission denie问题
  在确认属性有权限时,可能原因是根本没执行属性x。
  
$$usb驱动程序CDC_NCM指什么?
 CDC: Communication Device Class (CDC)USB的CDC类是USB通信设备类 (Communication Device Class)的简称
 This driver provides support for CDC NCM (Network Control Model Device USB Class Specification). The CDC NCM specification is   
 available from .     


$$ 运用debugfs来查看usb设备的pid和vid。
mount -t debugfs none /sys/kernel/debug
cat /sys/kernel/debug/usb/devices

**,shell的特殊变量
共7个特定变量(其实就是有他特殊含义的变量)。
         $#:传递到脚本的参数个数
         $*:以一个单字符串显示所有脚本参数,可超过9个(就是一个参数列表字符串,无附加引号)
         $$:当前进程ID号
         $!:后台运行的最后一个进程的ID号
         $@:与$*相同,但使用时加引号,在引号中返回每个参数(每个参数都有引号)
         $-:显示shell当前使用的选项,与set命令功能相同
         $?:显示脚本退出返回值,0表示正确
  
**,initrd和initramfs区别:
 1,initrd是ramdisk的块设备,而且是单独制作的文件系统,在系统启动时必须指定要"initrd="和"root="。
    initrd要配置CONFIG_BLK_DEV_INITRD选项 -- 支持initrd,必须先要配置CONFIG_BLK_DEV_RAM -- 支持ram disk
 
 2,initramfs中必须创建/init文件或者修改内核启动最后代码(init文件是软连接,指向什么? init -> bin/busybox,否则内核启动将会失败)
 
**,温故而知新:inittab
 id : runlevels : action : process
  id    :1~2个字符,配置行的唯一标识,在配置文件中不能重复。
  runlevels: Linux有7个运行级别,如下:
     0:关机。
     1:单用户字符界面。
     2:不具备网络文件系统(NFS)功能的多用户字符界面。
     3:具有网络功能的多用户字符界面。
     4: 保留不用。
     5:具有网络功能的图形用户界面。
     6:重新启动系统。
  action : init有如下几种行为, init行为:
   respawn
    启动并监视第4项指定的process,若process终止则重启它
   wait
    执行第4项指定的process,并等待它执行完毕
   once
    执行第4项指定的process
   boot
    不论在哪个执行等级,系统启动时都会运行第4项指定的process
   bootwait
    不论在哪个执行等级,系统启动时都会运行第4项指定的process,且一直等它执行完备
   off
    关闭任何动作,相当于忽略该配置行
   ondemand
    进入ondemand执行等级时,执行第4项指定的process
   initdefault
    系统启动后进入的执行等级,该行不需要指定process
   sysinit
    不论在哪个执行等级,系统会在执行boot 及bootwait之前执行第4项指定的process
   powerwait
    当系统的供电不足时执行第4项指定的 process,且一直等它执行完毕
   powerokwait
    当系统的供电恢复正常时执行第4项指定的process,且一直等它执行完毕
   powerfailnow
    当系统的供电严重不足时执行第4项指定的process
   ctrlaltdel
    当用户按下【Ctrl+Alt+Del】时执行的操作
   kbrequest
    当用户按下特殊的组合键时执行第4项指定的process,此组合键需在keymaps文件定义
    
 process: 所要执行的shell命令。任何合法的shell语法均适用于该字段。
 
**,console和getty以及etc/profile知识。
 etc/profile文件的作用:
  这个文件是每个用户登录时都会运行的环境变量设置,当用户第一次登录时,该文件被执行。
 getty打开tty终端,eg:
  getty -L ttyS000 115200 -n root -a -I "login in ttyS000" #打开终端并自动登录且打印
  
 疑问:getty -L ttyS000 115200和getty -L ttyAMA0 115200以及getty -L console 115200都可以登录串口终端,为何??
 console分内核启动时只有write输出功能的驱动,以及用户态的标准tty终端特殊的驱动。
 ttyS000和ttyAMA0都可以登录到串口终端,说明这个两个tty设备驱动底层对应的write和read都是对应的同一个串口进行操作。
 附录讲的比较好的帖子:http://blog.csdn.net/skyflying2012/article/details/41078349
 
**,linux终端的各种信号:
 ctrl+c: 就是发送Terminal到当前的程序,比如你正在运行一个查找功能,文件正在查找中,Ctrl+C就会强制结束当前的这个进程。
 ctrl+d:发送一个exit信号,没有那么强烈,类似ctrl+C的操作,比如你从管理员root退回到你的普通用户就可以这么用。
 ctrl+z:是把当前的程序挂起,暂停执行这个程序,比如你正在mysql终端中,需要出来搞点其他的文件操作,又不想退出mysql终端(因为下次还得输入用户名密码进入,挺麻烦),
   于是可以ctrl+z将mysql挂起,然后进行其他操作,然后输入fg回车后就可以回来,当然可以挂起好多进程到后台,然后fg 加编号就能把挂起的进程返回到前台。
   当然,配合bg和fg命令进行前后台切换会非常方便.
 ctrl+s: 终端暂停假死。   crtl+q:恢复终端。
 
   ps:由于hisi平台在/etc/profile中会启动app,所以当在串口终端按下ctrl+d时,串口终端会退出,当然此时inittab中定义的respawn的动作会重新启动该串口终端,进而启动app,所以crtl+d
    可以达到重启app的效果。
 
**,linux下/etc/passwd文件格式解析。
 LOGNAME:PASSWORD:UID:GID:USERINFO:HOME:SHELL
 
 root:x:0:0:root:/root:/bin/bash

  bin:x:1:1:bin:/bin:/sbin/nologin

  daemon:x:2:2:daemon:/sbin:/sbin/nologin
 说明:现在的Unix/Linux系统中,口令不再直接保存在passwd文件中,通常将passwd文件中的口令字段使用一个“x”来代替,
  将/etc /shadow作为真正的口令文件,用于保存包括个人口令在内的数据。当然shadow文件是不能被普通用户读取的,只有超级用户才有权读取。
 #,/etc/shadow文件解析:
 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
 root:$1$0dJv11NZ$78q7zYZKbfLKNoQdRPERX/:15506:0:99999:7:::
 stb:$1$hYn82l9l$RjfvPDf2QHjx7je/6hlRH1:15506:0:99999:7:::
 
 #,/etc/gshadow是/etc/group的加密资讯文件,比如用户组(Group)管理密码就是存放在这个文件。/etc/gshadow和/etc/group是互补的两个文件;对于大型服务器,
 针对很多用户和组,定制一些关系结构比较复杂的权限模型,设置用户组密码是极有必要的。比如我们不想让一些非用户组成员永久拥有用户组的权限和特性,
 这时我们可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码;
 /etc/gshadow 格式如下,每个用户组独占一行;
 groupname:password:admin,admin,...:member,member,...
 第一字段:用户组
 第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;
 第三字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;
 第四字段:组成员,如果有多个成员,用,号分割;
 
 

你可能感兴趣的:(Linux 系统相关知识记录)