npm run dev 是测试用的 就是看你配置文件有没有配对 会不会报错.
没问题的话 就把配置写到 src/config.prod.ts里,然后用 npm run build 构建一下 会生成一个dist文件夹,然后在应用根目录运行 npm start 命令 就启动了
前端,npm run build 会生成一个 build 文件夹 把 build下面的内容拷贝到 nginx 下就可以了
要在LINUX系统上运行PHP,必须要安装PHP工作环境:PHP+APACHE,如果用到数据库还要+mysql.
如果是java的web开发的话,因为大型的javaWEB项目一般将部署在非windows系统中(主要是linux),开发的项目发布、线上问题等等都要求工程师懂linux系统.
ASP.NET 没有这样的要求
呵呵,我就是一个前端工程师,说实话,如果你所在的公司的开发人员的分工清晰的话,确实不用前端人员了解linux相关的东东.
前端的基本技能包括:HTML、CSS、javascript(jQuery)的熟练使用,可以解决绝大部分的浏览器兼容问题.现在一般要求前端要懂得更宽一些,除了javascript基础上的整站方案extJs、DWR等还要应用如flex/flash(actionscript)开发、android系统开发、还有根据实际应用要掌握的表现层后台开发技术,如我们公司用的velocity语法等.
首先看一下Process类:
[plain] view plain copy
ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,
该实例可用来控制进程并获得相关信息.Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、
检查进程的退出状态以及销毁(杀掉)进程的方法.
创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows
操作都将通过三个流 (getOutputStream()、getInputStream() 和 getErrorStream()) 重定向到父进程.
父进程使用这些流来提供到子进程的输入和获得从子进程的输出.因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,
如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁.
当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程.
对于带有 Process 对象的 Java 进程,没有必要异步或并发执行由 Process 对象表示的进程.
特别需要注意的是:
①.,创建的子进程没有自己的终端控制台,所有标注操作都会通过三个流
(getOutputStream()、getInputStream() 和 getErrorStream()) 重定向到父进程(父进程可通过这些流判断子进程的执行情况)
则可能导致子进程阻塞,甚至产生死锁
abstract void destroy()
杀掉子进程.
abstract int exitValue()
返回子进程的出口值.根据惯例,值0表示正常终止.
abstract InputStream getErrorStream()
获取子进程的错误流.
abstract InputStream getInputStream()
获取子进程的输入流.
abstract OutputStream getOutputStream()
获取子进程的输出流.
abstract int waitFor()
导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止.
如果已终止该子进程,此方法立即返回.如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程.
再来看一下Runtime类:
每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接.可以通过getRuntime方法获取当前运行时环境.
应用程序不能创建自己的Runtime类实例.
介绍几个主要方法:
Process exec(String command)
在单独的进程中执行指定的字符串命令.
Process exec(String command, String[] envp)
在指定环境的单独进程中执行指定的字符串命令.
Process exec(String command, String[] envp, File dir)
在有指定环境和工作目录的独立进程中执行指定的字符串命令.
Process exec(String[] cmdarray)
在单独的进程中执行指定命令和变量.
Process exec(String[] cmdarray, String[] envp)
在指定环境的独立进程中执行指定命令和变量.
Process exec(String[] cmdarray, String[] envp, File dir)
在指定环境和工作目录的独立进程中执行指定的命令和变量.
command:一条指定的系统命令.
envp:环境变量字符串数组,其中每个环境变量的设置格式为name=value;如果子进程应该继承当前进程的环境,则该参数为null.
dir:子进程的工作目录;如果子进程应该继承当前进程的工作目录,则该参数为null.
cmdarray:包含所调用命令及其参数的数组.
以下为示例(要打成可执行jar包扔到linux下执行):
[java] view plain copy
public class test {
public static void main(String[] args){
InputStream in = null;
try {
Process pro = Runtime.getRuntime().exec(new String[]{"sh",
"/home/test/test.sh","select admin from M_ADMIN",
"/home/test/result.txt"});
pro.waitFor();
in = pro.getInputStream();
BufferedReader read = new BufferedReader(new InputStreamReader(in));
String result = read.readLine();
System.out.println("INFO:"+result);
} catch (Exception e) {
e.printStackTrace();
}
在这用的是Process exec(String[] cmdarray)这个方法
/home/test/test.sh脚本如下:
#!/bin/sh
#查询sql
SQL=$1
#查询结果保存文件
#数据库连接
DB_NAME=scott
DB_PWD=tiger
DB_SERVER=DB_TEST
RESULT=+sqlplus -S ${DB_NAME}/${DB_PWD}@${DB_SERVER} !
set heading off
set echo off
set pages 0
set feed off
${SQL}
/
commit
!+
echo "${RESULT}" ${RESULT_FILE}
echo 0;
特别需要注意的是,当需要执行的linux命令带有管道符时(例如:ps -ef|grep java),用上面的方法是不行的,解决方式是将需要执行的命令作为参数传给shell
public class Test {
public static void main(String[] args) throws Exception{
String[] cmds = {"/bin/sh","-c","ps -ef|grep java"};
Process pro = Runtime.getRuntime().exec(cmds);
InputStream in = pro.getInputStream();
String line = null;
while((line = read.readLine())!=null){
System.out.println(line);
PS:
Runtime.getRuntime().exec()这种调用方式在java虚拟机中是十分消耗资源的,即使命令可以很快的执行完毕,频繁的调用时创建进程消耗十分客观.
java虚拟机执行这个命令的过程是,首先克隆一条和当前虚拟机拥有一样环境变量的进程,再用这个新的进程执行外部命令,最后退出这个进程.频繁的创建对CPU和内存的消耗很大
以上就是土嘎嘎小编为大家整理的前端执行linux命令相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!