2019-10-24 11:52:37 xijieyuan2qi 阅读数 113
  • Linux驱动程序之NOR FLASH

    norflash驱动程序的步骤: (1)分配map_info结构体,并设置:物理地址,位宽,虚拟地址等 (2)设置读写函数,用默认函数即可 (3)调用NOR FLASH协议层提供的函数来识别:do_map_probe (4)添加分区:add_mtd_partitions

    2607 人正在学习 去看看 韦东山

                                                           

Linux把程序放在后台运行是怎么实现的?

比如。你写了一个脚本。叫做  1.bash  运行的时候。./1.bash就运行了。放入后台运行:./bash & 

就是加一个& 符号就可以把程序放在后台运行不占用前台终端。

如何查看在后台运行的程序呢?

 

jobs  查看后台运行的程序

ctrl+z  将前台 进程放入后台并暂停
fg  编号   将后台暂停的进程放入前台运行
bg  编号  将后台暂停的进程在后台继续运行
 

2013-08-08 09:16:47 NEOSL 阅读数 704
  • Linux驱动程序之NOR FLASH

    norflash驱动程序的步骤: (1)分配map_info结构体,并设置:物理地址,位宽,虚拟地址等 (2)设置读写函数,用默认函数即可 (3)调用NOR FLASH协议层提供的函数来识别:do_map_probe (4)添加分区:add_mtd_partitions

    2607 人正在学习 去看看 韦东山

最近把java web项目部署到weblogic上,一直通过windows端的F-Secure操作服务器,每次启动weblogic使用./startWebLogic.sh,但是发现退出终端后,weblogic也是自动退出,查了资料,发现Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:

 

         /usr/local/mysql/bin/mysqld_safe --user=mysql &

 

但是我们很多程序并不象mysql一样可以做成守护进程,可能我们的程序只是普通程序而已,一般这种程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在后台能够一直运行,那么就使用nohup:

nohup ./start.sh &

在shell中回车后提示:

 

        [~]$ appending output to nohup.out

        原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。

 

但是有时候在这一步会有问题,当把终端关闭后,进程会自动被关闭,察看nohup.out可以看到在关闭终端瞬间服务自动关闭

 

在当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端(如果每次在nohup执行成功后直接点关闭程序按钮关闭终端.。所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown)

 

       正确启动weblogic服务

       nohup ./startWebLogic.sh &

       

在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中

 

       查看日志

       tail -100f nohup.out 

 

查看后台运行的进程

jobs -l

 

       退出F-secure

       exit

       

        附:nohup命令参考

 

nohup 命令

 

  用途:不挂断地运行命令。

 

  语法:nohup Command [ Arg ... ] [ & ]

 

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示"and"的符号)到命令的尾部。

 

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

 

退出状态:该命令返回下列出口值:

 

  126 可以查找但不能调用 Command 参数指定的命令。

 

  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

 

  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

 

  nohup命令及其输出文件

 

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( nohang up)。

 

  该命令的一般形式为:nohup command &

 

  使用nohup命令提交作业

 

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

 

  nohup command > myout.file 2>&1 &

 

在上面的例子中,输出被重定向到myout.file文件中。

 

使用 jobs 查看任务。

 

使用 fg %n 关闭。

 

另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样就可以利用这些命令在后台上传和下载文件了。

 

附:查看linux系统的几种方法:

  1. uname -a
  2. cat /proc/version
  3. cat /etc/issue
  4. lsb_release -a

 

       参考文章:http://www.einit.com/user1/11/archives/2006/3603.html  

                         http://www.williamlong.info/archives/482.html  

                         http://yakar.iteye.com/blog/687656

2019-12-08 16:53:36 toby54king 阅读数 104
  • Linux驱动程序之NOR FLASH

    norflash驱动程序的步骤: (1)分配map_info结构体,并设置:物理地址,位宽,虚拟地址等 (2)设置读写函数,用默认函数即可 (3)调用NOR FLASH协议层提供的函数来识别:do_map_probe (4)添加分区:add_mtd_partitions

    2607 人正在学习 去看看 韦东山

零、问题描述

最近在搞linux下打包程序,由于使用了Qt相关的函数接口,出现了很多Qt相关的问题,上篇文章写了linux下打包C++可执行程序的方法:https://blog.csdn.net/toby54king/article/details/103376514,shell脚本打包的程序,打包了很多系统的库,造成转移到其他系统上出现冲突,后来只能一个一个手动挑选缺失的库,这样就解决了。

一、出现的问题和解决方法

下面总结一下出现的问题以及解决方法:
1、error:undefined reference to ‘vtable for *’ -》:
把windows下的moc文件放入到linux下面,加入到需要的.cpp文件中,同时注意修改moc文件中的头文件路径为linux下面的。

2、libQt5Core.so:error:undefined reference to ‘ucal_clone_54’ -》缺少库libicuil8n.so.54库

3、error while loading shared libraries:xxx.so: cannot open shared object file:No such file or directory
需要设置环境变量:export LD_LIBRARY_PATH=yourLibPath

4、this application failed to start because it could not find or load the Qt platform plug “xcb”.
原因:缺少qt跨平台的platform文件夹

5、QXcbConnection:Could not connect to display.(xshell终端下不能显示Qt程序)
在.bashrc文件中添加:
export QT_QPA_PLATFORM=‘offscreen’

6、Available platform plugins are: linuxfb, minimal, offscreen, xcb.
在终端设置环境变量 export QT_DEBUG_PLUGINS=1,可以查看缺失的库,我这里缺失了libQt5DBus.so.5库造成的。

7、/bin/bash^M: bad interpreter: No such file or directory”
在执行shell脚本时提示这样的错误主要是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。
查看脚本文件是dos格式还是unix格式的办法。
1》、cat -A filename 从显示结果可以判断,dos格式的文件行尾为^Munix,unix格式的文件行尾为
解决方法:
1》、使用sed命令sed -i “s/\r//” filename 或者 sed -i “s/^M//” filename直接替换结尾符为unix格式(测试这种方法好使)

二、通过配置脚本设置环境变量

由于在linux下每次执行程序都需要设置好环境变量和设置显示终端,所以可以写一个shell脚本,使用shell脚本去启动程序即可,shell脚本和可执行程序在一个目录下,我需要的shell脚本如下:

#!/bin/bash
#file:StartProgram.sh
#author:ISMILELI

export QT_QPA_PLATFORM='offscreen'
export LD_LIBRARY_PATH=$PWD

echo "----------StartProgram.sh------"

#需要给程序传入参数的话,可以使用一下方法启动程序
./appExe.out $1 $2 $3 $4 $5
2018-10-15 21:02:28 itwish_liang 阅读数 826
  • Linux驱动程序之NOR FLASH

    norflash驱动程序的步骤: (1)分配map_info结构体,并设置:物理地址,位宽,虚拟地址等 (2)设置读写函数,用默认函数即可 (3)调用NOR FLASH协议层提供的函数来识别:do_map_probe (4)添加分区:add_mtd_partitions

    2607 人正在学习 去看看 韦东山

本章Blog相关Linux知识点


计算机=硬件+软件 。

冯诺依曼理论,五大部件:CPU —— 运算器、控制器, 存储器,输入设备,输出设备。

Shell 环境是通过环境变量进行配置的 ,环境变量保存对应用程序的配置,在当前进程有效 。若长期有效,需保存到配置文件中。

  • 语言分类:

编译型语言:写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件;

解释型语言:解释性语言在运行程序的时候才翻译,效率比较低。

相比较而言,两种不同型语言只是翻译的时间不同

  • 程序与进程的关系:

程序并不能单独执行,只有将程序加载到内存中,系统为他分配资源后才能够执行,这种执行的程序称之为进程,也就是说进程是系统进行资源分配和调度的一个独立单位,每个进程都有自己单独的地址空间。所以说程序与进程的区别在于,程序是指令的集合,是进程运行的静态描述文本,而进程则是程序在系统上顺序执行时的动态活动。

进程和程序并不是一一对应的,一个程序执行在不同的数据集上就成为不同的进程。一般来说,一个进程肯定有一个与之对应的程序,而且只有一个。而一个程序有可能没有与之对应的进程,也有可能有多个进程与之对应。

  • 环境变量:仅当前进程有效 ,命名的内存空间             

引用环境变量:echo ${ 变量 }      例:#echo $PS1           

$PS1 组成格式为 [\u@\h \W]\$ ,其中   \u表示登录的用户名 ,\h 表示主机名,\W表示工作目录的路径基名

  • Linux路径,路径分隔符 :/

相对路径:从当前位置开始的路径

绝对路径:从顶层开始的路径

  • Linux文件系统特性 :

文件名可以使用除 / 号外的任意字符 ,但长度不能超过255字符

严格区分大小写

 

Linux程序管理


程序四要素:二进制文件、配置文件、库文件及帮助文件

  • 程序管理器:

Debian 的程序包管理器 :deb

SuSE、Redhat的程序包管理器 :rpm

  • 通用软件

内核:文件系统(File system)、网络协议栈、进程管理、加密解密机制、驱动程序、创建索引加密、解密功能;TCP/IP协议 (内核模块)

  • 应用软件

系统管理:网络配置、文件系统(分区、raid)、用户、文件(创建、删除、移动、权限)、加密解密、内核(编译)、启动过程、程序包管理

网络服务管理:web(Apache,nginx,mysql,php)、NFS、DNS、FTP、Postfix/D :ovecot 、网络安全(Iptables、tcp_Wrapper)

Mysql:CRUD、索引、存储引擎、备份恢复、集群、分片

集群:LB、HA、Hadoop 、GFS

WEB:Nginx 、Haproxy、Keeplived、tomcat、分布式文件系统、CDN、Nosql

虚拟化:Xen 、KVM、LXC/openVZ

Laas :Openstack

自动化运维:zabbix 、nginos 、Python

规模并行处理平台:hadoop

 

Linux命令终端类型


  • linux终端类型:

串行终端,串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。类型为/dev/ttys/#

物理终端,直接接入计算机显示器通常被称为物理终端,如/dev/console

虚拟终端  ,虚拟终端附加在物理终端之上的,是以软件方式虚拟实现的终端。系统开机后会启动6个虚拟终端,在CentOs6系统,可以使用快捷键 Ctrl+Alt+F[1-6]切换虚拟终端。类型为/dev/tty#

伪终端(模拟终端)是纯粹的软件方式实现,而且不会附加在本地物理终端上,建立一个telnet或ssh连接使用的终端都是伪终端,如客户端软件ssh ,CRT 等。类型为 /dev/pts/#

Ctrl +c 取消当前程序运行

Ctrl+Alt+F[1-6] 启动命令界面,Ctrl+Alt+F7启动图形界面(先启动图形功能#startx)

命令 #startx  &  表示在后台运行

Shift +Pageup/Pagedown  翻屏查看命令界面之前的页

[root@vm ~]# tty    # 显示当前终端访问类型
/dev/pts/0    # 代表了是模拟终端

[root@vm ~]# who    # 查看当前系统登录的所有用户及其信息
root     tty1         2018-09-25 18:38    # 代表了是本机的虚拟终端登陆
root     pts/0        2018-09-25 18:39 (192.168.4.101)    # 代表了是本机的模拟终端登陆

Linux命令类型及命令帮助信息


  • linux命令格式:  

command  options   arguments

命令            选项         参数

选项:调整命令的执行特性

    短选项:-char ,可合并 ;    

    长选项:--word ,多个选项之间必须以空格分隔;

参数:命令的作用对象

    有些命令可以带多个参数;

    各参数之间使用空格分隔;

  • Linux命令类型 :

    alias:别名。

    keyword:关键字,Shell保留字。

    function:函数,Shell函数。

    builtin:内建命令,Shell内建命令。

    file:文件,磁盘文件,外部命令。

    unfound:没有找到。

  • linux命令帮助:

内置命令:

    # help  COMMAND  内部命令获取帮助

外置命令:

    # COMMAND --help 外部获取命令帮助

    # man COMMAND  查看命令man手册

    # info COMMAND 在线文档        

    应用程序自带的文档:/usr/shared/doc  帮助文档

    google   网络查看帮助

[root@vm ~]# help cd    # 对内部命令cd查看帮助信息
cd: cd [-L|-P] [dir]
    Change the shell working directory.

[root@vm ~]# date --help    # 对外部命令date 查看帮助信息
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

[root@vm ~]# man cd    # 对命令cd查看man帮助信息

[root@vm ~]# man ls    # 对命令ls查看man帮助信息
      
[root@vm ~]# info ls    # 命令ls查看帮助信息

man的使用机制:man其实能为命令(普通命令、管理命令)、程序的配置文件格式、系统调用、库调用、游戏及其他不便归类的文件提供帮助信息

翻屏:

    space  向文件尾部翻一屏

    b    向文件首部翻一屏

    回车键:向文件尾部翻一行

    k   向文件首部翻一行

    Ctrl +d  向文件尾部翻半屏

    Ctrl +u  向文件首部翻半屏

文本搜索:

    /keyword    向文件尾部搜索

    ?keyword    向文件首部搜索                                

    n  跟搜索命令相同的方向(下一个)

    N  跟搜索命令相反的方向(上一个)

    q :退出

man 分段机制:1-8

1. 用户命令 2.系统调用 3.库 调用 4.设备文件 5.文件格式 6.游戏 7.杂项 8.管理命令

  • type命令

type 命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。

选项:

    -t:输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;

    -p:如果给出的指令为外部指令,则显示其绝对路径;

    -a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。

[root@vm ~]# type ls
ls is aliased to `ls --color=auto`

[root@vm ~]# type cd
cd is a shell builtin

[root@vm ~]# type date
date is /bin/date

[root@vm ~]# type nginx
-bash: type: nginx: not found

[root@vm ~]# type -p date
/bin/date

[root@vm ~]# type -t ls
alias
  • hash命令:

hash命令:显示、添加或清除哈希表。linux系统下会有一个hash表,事先通过一个变量设定好了多个路径,当用户输入命令时,shell会自动到这些路径下(由左至右)查看与命令名称相同的可执行文件查找到并执行过的命令会被保存到一个hash查找表中,

[root@vm ~]# hash    # 查看hash表的内容
hits	command
   4	/usr/bin/tty
   1	/bin/date
   5	/bin/rpm
   3	/usr/bin/yum
   1	/usr/bin/who
   6	/usr/bin/man
   1	/usr/bin/info
   3	/bin/ls

[root@vm ~]# hash -h    # hash 命令帮助
-bash: hash: -h: invalid option
hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]

[root@vm ~]# hash -l    # hash 命令列表
builtin hash -p /usr/bin/tty tty
builtin hash -p /bin/date date
builtin hash -p /bin/rpm rpm
builtin hash -p /usr/bin/yum yum
builtin hash -p /usr/bin/who who
builtin hash -p /usr/bin/man man
builtin hash -p /usr/bin/info info
builtin hash -p /bin/ls ls

[root@vm ~]# hash -r    # 清空hash表

[root@vm ~]# hash
hash: hash table empty
  • whatis命令

whatis命令:是用于查询一个命令执行什么功能,并将查询结果打印到终端上。另whatis命令可显示手册部分的页眉行,然后可以发出man命令以获取附加的信息。whatis命令等同于使用man -f命令。

  • dirname命令:

dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。

[root@vm ~]# dirname  /usr/local/bin/
/usr/local

[root@vm ~]# dirname /usr/local/bin
/usr/local

[root@vm ~]# dirname /root/
/

[root@vm ~]# dirname /
/
  • basename命令:

basename命令用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。

[root@vm ~]# basename /usr/local/bin/
bin

[root@vm ~]# basename /usr/local/bin
bin

[root@vm ~]# basename /root/
root

[root@vm ~]# basename /
/
  • which命令:

which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

[root@vm ~]# which ls
alias ls='ls --color=auto'
	/bin/ls

[root@vm ~]# which vi
alias vi='vim'
	/usr/bin/vim

[root@vm ~]# which pwd
/bin/pwd

Linux汇总一常用命令


# tty :显示当前终端对应的终端设备文件,即终端访问类型

# who :查看当前系统登录的所有用户及其信息

# hash:显示、添加或清除hash 表

# type COMMAND:显示指定命令类型        

# dirname PATH :查看路径目录名

# basename PATH:查看路径基名     

# which COMMAND:查看一个可执行程序的具体路径,即外部命令的位置

# help BuiltinCommand :查看内置命令帮助信息

# COMMAND --help :获取外部命令帮助

# man COMMAND:查看命令手册

# info COMMAND 在线文档

 

linux下I2C的读写应用程序

博文 来自: onetwothreef
没有更多推荐了,返回首页