Check for an updated copy of this README at http://wiki.apache.org/hadoop/Chukwa_Startup_and_Shutdown_Scripts

start-all.sh - runs start-collectors.sh, start-agents.sh, start-probes.sh, start-data-processors.sh

start-collectors.sh - start the chukwa collector daemon (jettyCollector.sh) on hosts listed in conf/collectors
stop-collectors.sh - stop the chukwa collector daemon (jettyCollector.sh) on hosts listed in conf/collectors

jettyCollector.sh - start the chukwa collector daemon on the current host

start-agents.sh - start chukwa agent daemon (agent.sh) on all hosts listed in conf/agents
stop-agents.sh - stop chukwa agent daemon (agent.sh) on all hosts listed in conf/agents

agent.sh - start the chukwa agent on the current host

start-probes.sh - runs, in this order, systemDataLoader.sh, torqueDataLoader.sh, nodeActivityDataLoader.sh

slaves.sh <command command_args ...> - run arbitrary commands on all hosts in conf/slaves

jettycollector.sh - start a jetty based version of the Chukwa collector
agent.sh - start the chukwa agent on the local machine
