---
name: "ns_after"
section: "3aolserver"
platform: "linux"
package: "aolserver4-dev"
version: "4.5.1-18.1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/ns_after"
---

# ns\_after(3aolserver)

commands

```

```

## NAME

ns\_after, ns\_cancel, ns\_pause, ns\_resume, ns\_schedule\_daily, ns\_schedule\_proc, ns\_schedule\_weekly, ns\_unschedule\_proc - commands

## SYNOPSIS

**ns\_after** *seconds {script \| procname ?args?}*

**ns\_cancel** *id*

**ns\_pause** *id*

**ns\_resume** *id*

**ns\_schedule\_daily** ?-thread? ?-once? *hour minute {script \| procname ?args?}*

**ns\_schedule\_proc** ?-thread? ?-once? *interval {script \| procname ?args?}*

**ns\_schedule\_weekly** ?-thread? ?-once? *day hour minute {script \| procname ?args?}*

**ns\_unschedule\_proc** *id*

```

```

## DESCRIPTION

**ns\_after**

run the specified script or procedure  after the specified number of seconds

ns\_after returns an id which can be used with the ns\_pause, ns\_cancel and ns\_resume apis.

**ns\_cancel**

stops the scheduled running of the id returned by an ns\_after

returns 1 if unscheduled 0 if the script of procedure couldn't be unscheduled

**ns\_pause**

pauses the scheduled running of the id returned by an ns\_after

returns 1 if paused, 0 if the script of procedure couldn't be paused

**ns\_resume**

resumes the scheduled running of the id returned by an ns\_after

returns 1 if resumed, 0 if the script of procedure couldn't be resumed

**ns\_schedule\_daily**

ns\_schedule\_daily runs the specified Tcl script or procedure (procname) once a day at the time specified by hour and minute. The hour can be from 0 to 23, and the minute can be from 0 to 59.

Specify -thread if you want a thread created to run the procedure. This will allow the scheduler to continue with other scheduled procedures. Specifying -thread is appropriate in situations where the script will not return immediately, such as when the script performs network activity.

Specify -once if you want the script to run only one time. The default is that the script will be re-scheduled after each time it is run.

ns\_schedule\_daily returns an id number for the scheduled procedure that is needed to stop the scheduled procedure with ns\_unschedule\_proc.

**ns\_schedule\_proc**

ns\_schedule\_proc runs the specified Tcl script or procedure (procname) at an interval specified by interval. The interval is the number of seconds between runs of the script.

Specify -thread if you want a thread created to run the procedure. This will allow the scheduler to continue with other scheduled procedures. Specifying -thread is appropriate in situations where the script will not return immediately, such as when the script performs network activity.

Specify -once if you want the script to run only one time. The default is that the script will be re-scheduled after each time it is run.

ns\_schedule\_proc returns an id number for the scheduled procedure that is needed to stop the scheduled procedure with ns\_unschedule\_proc.

**ns\_schedule\_weekly**

ns\_schedule\_weekly runs the specified Tcl script or procedure (procname) once a week on the day specified by day and the time specified by hour and minute. The day can be from 0 to 6, where 0 represents Sunday. The hour can be from 0 to 23, and the minute can be from 0 to 59.

Specify -thread if you want a thread created to run the procedure. This will allow the scheduler to continue with other scheduled procedures. Specifying -thread is appropriate in situations where the script will not return immediately, such as when the script performs network activity.

Specify -once if you want the script to run only one time. The default is that the script will be re-scheduled after each time it is run.

ns\_schedule\_weekly returns an id number for the scheduled procedure that is needed to stop the scheduled procedure with ns\_unschedule\_proc.

**ns\_unschedule\_proc** *id*

ns\_unschedule\_proc stops a scheduled procedure from executing anymore. The scheduled procedure to be stopped is identified by its id, which was returned by the ns\_schedule\* function that was used to schedule the procedure.

## EXAMPLES

**ns\_after ns\_cancel ns\_pause ns\_resume**

This example illustrates a web interface used to manage jobs. Depending on the action provided a job can be created, cancelled, paused or resumed.

```

set action [ns_queryget action]
set job [ns_queryget job]
switch $action {
    create {
        set job [ns_after 10 [ns_queryget script]]
        ns_puts "Job created with id: $job"
    }
    cancel {
        if {[ns_cancel $job]} {
            ns_puts "Job $job cancelled"
        } else {
            ns_puts "Job $job not cancelled"
        }
    }
    pause {
        if {[ns_pause $job]} {
            ns_puts "Job $job paused"
        } else {
            ns_puts "Job $job not paused
        }
    }
    resume {
        if {[ns_resume $job]} {
            ns_puts "Job $job resumed"
        } else {
            ns_puts "Job $job couldn't be resumed"
        }
    }
    default {
        ns_puts "Invalid action $action"
    }
}
```

**ns\_schedule\_daily**

This example defines a script called rolllog that uses ns\_accesslog to roll the access log to a file with an extension containing the current date. The ns\_schedule\_daily function is used to execute the rolllog script on a daily basis.

```

# Script to roll and rcp log file to host "grinder"
proc rolllog {} {
    set suffix [ns_strftime "%y-%m-%d"]
    set new [ns_accesslog file].$suffix
    ns_accesslog roll $new
    exec rcp $new grinder:/logs/[file tail $new]
}
# Schedule "rolllog" to run at 3:30 am each morning
ns_schedule_daily -thread 3 30 rolllog
```

**ns\_schedule\_proc**

```

proc dosomething blah {
    ns_log Notice "proc with arg '$blah'"
}
ns_schedule_proc 10 dosomething $arg1
```

## SEE ALSO

## KEYWORDS

schedule pause resume unschedule cancel after
